写treeview遇到问题,请高手解决!

zsww 2003-10-30 01:46:05
“/Bbs”应用程序中的服务器错误。
--------------------------------------------------------------------------------
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
源错误:
行 37:
行 38: TreeView1.Nodes.Clear();
行 39: DataRow [] drs = conf.ds.Tables["tab_BigClass"].Select("");
行 40: foreach( DataRow r in drs )
行 41: {

源文件: f:\bbs\tree.aspx.cs 行: 39


---------------------------------tree.aspx.cs----------------------------------
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Microsoft.Web.UI.WebControls;

namespace Bbs
{
/// <summary>
/// tree1 的摘要说明。
/// </summary>
public class tree : System.Web.UI.Page
{
public Microsoft.Web.UI.WebControls.TreeView TreeView1;
public config conf = new config();


private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{
conf.GetDs("select * from Big_Class","tab_BigClass");
conf.GetDs("select * from Small_Class","tab_SmallClass");
CreateNode();
}
}

public void CreateNode()
{

TreeView1.Nodes.Clear();
DataRow [] drs = conf.ds.Tables["tab_BigClass"].Select("");
foreach( DataRow r in drs )
{
TreeNode rootnode = new TreeNode();
rootnode.Text = r["BigClass_Name"].ToString();
rootnode.NodeData = r["BigClass_ID"].ToString();
// rootnode.NavigateUrl = "MainForm.aspx"+"?BID="+ r["bigclass_ID"].ToString() +"&SID=-1";
rootnode.Target = "mainFrame";
// rootnode.Expanded=true;
TreeView1.Nodes.Add(rootnode);
string parentid=r["BigClass_ID"].ToString();
CreateNode1(rootnode,parentid);
}
}

private void CreateNode1(TreeNode parentnode,string parentid)
{
DataRow [] drsr = conf.ds.Tables["tab_SmallClass"].Select("BigClass_ID = "+parentid);
foreach( DataRow rw in drsr )
{
TreeNode tempnode = new TreeNode();
tempnode.Text = rw["SmallClass_Name"].ToString();
tempnode.NodeData = rw["SmallClass_ID"].ToString();
tempnode.NavigateUrl = "MainForm.aspx"+"?BID="+ rw["BigClass_ID"].ToString() +"&SID="+ rw["SmallClass_ID"].ToString();
tempnode.Target = "mainFrame";
parentnode.Nodes.Add(tempnode);
}
}



#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion
}
}


---------------------------------config.cs部分---------------------------------
/// <summary>
/// 执行一个Sql语句返回一个DataSet对象
/// </summary>
/// <param name="str_Sql">sql语句</param>
/// <param name="str_Table">内存表名称</param>
/// <returns>DataSet对象</returns>
namespace Bbs
{
public class config:Page
{
public SqlConnection myConn;
public SqlCommand myCommand;
public SqlDataAdapter myAda;
public SqlDataReader myReader;
public DataSet ds;
public DataTable dt;
public DataRow dr;
public string FileName;
public int FileSize;
.......

public DataSet GetDs(string str_Sql,string str_Table)
{
open();
myAda = new SqlDataAdapter(str_Sql,myConn);
ds = new DataSet();
myAda.Fill(ds,str_Table);
myConn.Close();
return ds;
}

}
}


编译通过,但是在浏览器中查看就出现错误,请高手解决!







...全文
37 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
2002pine 2003-10-30
  • 打赏
  • 举报
回复
当然用一张表更好。
zsww 2003-10-30
  • 打赏
  • 举报
回复
现在问题算是解决了,我只能把这句话分开写:
conf.GetDs("select * from Big_Class","tab_BigClass");
conf.GetDs("select * from Small_Class","tab_SmallClass");

顺便我想了解一下,一般树结构(大类、小类)的数据库用2张表还是1张表,哪种更好一点??

-----------努力学习 不断实践 虚心讨教---------
zsww 2003-10-30
  • 打赏
  • 举报
回复
2002pine:那我应该怎么做??

我现在树结构是放在2张表里的。

-----------努力学习 不断实践 虚心讨教---------
2002pine 2003-10-30
  • 打赏
  • 举报
回复
DataRow [] drs = conf.ds.Tables["tab_BigClass"].Select("");
你这句话有问题,你可以看到此时conf.ds.Tables["tab_BigClass"]不存在。
原因是你的conf的类有问题,
conf.GetDs("select * from Big_Class","tab_BigClass");
conf.GetDs("select * from Small_Class","tab_SmallClass");
这两句话在page_load 执行以后,
你的ds中只用tab_SmallClass表了。
gzhubonet 2003-10-30
  • 打赏
  • 举报
回复
暂时没高手来。我就帮你顶一下了!!!!!!!!!祝你成功。。
同时向你学习!!!!!

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧