treeview 中出现的怪问题,求教高手解答,十万火急!!

junzi6819 2006-11-06 10:43:51
在winCE下的应用程序,生成时没有任何错误,部署后出现如下错误:“treeview.exe nullReferenceException 位于 treeview.Form1.SetNodename()位于 treeview.Form1.ShowTree()位于 treeview.Form1_Load() 位于 System.windows.Forms.Form.OnLoad()位于 System.windows.Forms.Form._SetVisbl()位于 System.windows.Forms.Form.Set_Visbl()...
...全文
142 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
junzi6819 2006-11-06
  • 打赏
  • 举报
回复
我的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlServerCe;

namespace treeview
{
public partial class Form1 : Form
{
//private System.Data.SqlServerCe.SqlCeCommand sqlCeSelectCommand1;
//private System.Data.SqlServerCe.SqlCeCommand sqlCeInsertCommand1;
//private System.Data.SqlServerCe.SqlCeConnection sqlCeConnection1;
//private string cotegory_ID;
//private string cotegory_FatherID;
//private string cotegory_Name;
//private int cotegory_CengCi;
//private DataTable tblBom = new DataTable();
private Real_EstatePDADataSet.Building_CotegoryDataTable tblBom = new Real_EstatePDADataSet.Building_CotegoryDataTable();



public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
this.ShowTree();//将Cotegory表用树形图的方式显示出来
}
//-------------读入数据并准备显示树形图-----------------
private void ShowTree()
{
tblBom.Clear();
this.building_CotegoryTableAdapter.Fill(tblBom);
DataView viewBom = new DataView(tblBom);//新建一个数据视图
viewBom.RowFilter = "层次码=0";

//将数据集中的所有记录逐个根据他们之间的关系添加到树形表中去
if (viewBom.Count > 0)
{
int i = 0;//由于低层码为0的产品可能不止一个,因此设置序号,以便准确定位父项
foreach (DataRowView myRow in viewBom)
{
string strName = SetNodeName(myRow["目录编号"].ToString().Trim());
//此处是添加前面头两个节点
this.treeView1.Nodes.Add(new TreeNode(strName));

//此处初始化参数是第一个节点,然后该函数会递归添加所有子节点
PopulateTreeView(strName, treeView1.Nodes[i], myRow);
i++;
treeView1.SelectedNode = treeView1.Nodes[0]; //选中第一个节点
}
}
}
//---------根据输入的节点信息,递归调用最终添加所有的节点-----------------------
private void PopulateTreeView(string parentPart, TreeNode parentNode, DataRowView parentRow)
{
string strName = "";
DataTable tempDataTable = tblBom.Copy();
DataView viewBom = new DataView(tempDataTable);

//筛选获得当前传递过来的节点的子项,并将其添加到树形图中
//判断方法是:凡父项编号等于传递过来的节点的目录名称的,就是该节点的子项
viewBom.RowFilter = "父目录编号 = '" + parentRow["目录编号"].ToString().Trim() + "'";
//递归的添加每一个节点的所有子节点
foreach (DataRowView myRow in viewBom)
{
string cotegoryID = myRow["目录编号"].ToString().Trim();
strName = SetNodeName(cotegoryID);
TreeNode myNode = new TreeNode(strName);
myNode.Tag = cotegoryID;
parentNode.Nodes.Add(myNode);
//函数递归调用,将所有节点按顺序添加完毕
PopulateTreeView(strName, myNode, myRow);
}
}
private string SetNodeName(string materialID)
{
string strConn = "Data Source = Real_EstatePDA.sdf;password = 'lnicynu'";
SqlCeConnection cn = new SqlCeConnection(strConn);
cn.Open();
try
{

SqlCeCommand cmd = cn.CreateCommand();
cmd.CommandText = "select 目录名称 from Building_Cotegory where 目录编号='" + materialID + "'";
string cotegoryName = cmd.ExecuteScalar().ToString().Trim();
cn.Close();
return (cotegoryName);
}
catch (SqlCeException e)
{

return (e.ToString());
//cn.Close();
}


}


private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{

}


}
}
haitangjv 2006-11-06
  • 打赏
  • 举报
回复
up up

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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