我正在使用带有复选框和1提交按钮的树视图,它正在从数据库中获取值。
现在,如果我选中复选框并单击提交按钮,它应该在文本框中显示所选节点.....
这是我的树视图代码
public void Load_tree()
{
DataSet PrSet = PDataset("SELECT * FROM tbl_saleschannelhierarchyconfig");
TreeView1.Nodes.Clear();
foreach (DataRow dr in PrSet.Tables[0].Rows)
{
if ((int)dr["ParentID"] == 0)
{
TreeNode tnParent = new TreeNode();
tnParent.Text = dr["Parent"].ToString();
string value = dr["ParentID"].ToString();
//tnParent.Text = dr["SalesChannelName"].ToString(); - if u use this instead of the previous two lines, then "kmart" will be the parent. else "root" will be the parent.
//string value = dr["SalesChannelConfigID"].ToString();
tnParent.Expand();
TreeView1.Nodes.Add(tnParent);
FillChild(tnParent, value);
}
}
}
public int FillChild(TreeNode parent, string SalesChannelConfigID)
{
DataSet ds = PDataset("SELECT * FROM tbl_saleschannelhierarchyconfig WHERE ParentID =" + SalesChannelConfigID);
if (ds.Tables[0].Rows.Count > 0)
{
foreach (DataRow dr in ds.Tables[0].Rows)
{
TreeNode child = new TreeNode();
child.Text = dr["SalesChannelName"].ToString().Trim();
string temp = dr["SalesChannelConfigID"].ToString();
child.Collapse();
parent.ChildNodes.Add(child);
FillChild(child, temp);
}
return 0;
}
else
{
return 0;
}
和按钮点击代码
protected void Button1_Click(object sender, EventArgs e)
{
txtRetailCustomerGroup.Text = TreeView1.SelectedNode.Parent.ToString();
}
显示此异常 “对象引用未设置为对象的实例。”
可以帮助我吗?
答案 0 :(得分:1)
问题是你正试图用一个基本没有实例化的对象“做某事”。为了让你在内存中做某些事情 - 你使用一个对象作为它在内存中的位置的引用。您使用的对象没有引用内存中的位置(没有实际的“物理”对象),因此无法运行代码。
如果它只在你点击按钮时发生(即问题在你发布的事件处理程序中),那么它将是txtRetailCustomerGroup(因此它无法访问文本)或者它将是所选节点的TreeView1,SelectedNode或Parent(因此无法转换为字符串)。
使用断点快速查看对象(找到未实例化的对象),并且它应该变得明显在null对象所在的位置。然后你必须找出原因。
答案 1 :(得分:1)
在您学习如何使用断点之前,
将此用作按钮功能:
protected void Button1_Click(object sender, EventArgs e)
{
MessageBox.Show(string.Format("txt={0}\r\ntv={1}\r\nsn={2}",
txtRetailCustomerGroup,
TreeView1,
TreeView1 == null ? "." : TreeView1.SelectedNode));
txtRetailCustomerGroup.Text = TreeView1.SelectedNode.Parent.ToString();
}
运行一次,让我们知道弹出的消息框说明了什么。这样可以解决问题。
答案 2 :(得分:0)
protected void Button1_Click(object sender, EventArgs e)
{
txtRetailCustomerGroup.Text = TreeView1.SelectedNode.Parent.ToString();
}
如果您选择主根节点,它没有父节点,因此它返回此错误
如果这样改变,它将成功运行
txtRetailCustomerGroup.Text = TreeView1.SelectedNode.Text.ToString();
否则试试这个
protected void Button1_Click(object sender, EventArgs e)
{
try{
txtRetailCustomerGroup.Text = TreeView1.SelectedNode.Parent.ToString();
}
catch{}
}