关于第三方控件Dev 中TreeList 显示树形的问题!!
给为大侠我做的TreeLsit用DataSource绑定数据后,获取节点名称时报错,请问下高手些我这个问题该怎么解决???急~~!!!谢谢!!代码是这样的:///<sum...
给为大侠我做的TreeLsit用DataSource绑定数据后,获取节点名称时报错,请问下高手些我这个问题该怎么解决???急~~!!!谢谢!!
代码是这样的:
/// <summary>
/// 窗体加载事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void xFrmTreeListTest_Load(object sender, EventArgs e)
{
//得到所有用户信息(DataTable)
DataTable dt = ufManager.ToDataTableTow();
//显示树
AppendNodess(dt);
}
/// <summary>
/// List集合显示树
/// </summary>
/// <param name="ufList"></param>
/// <param name="p"></param>
private void AppendNodess(DataTable dt)
{
//绑定数据源
treeList.DataSource = dt;
//设置树的ParentFieldName 属性
treeList.ParentFieldName = "UserParentId";
//设置树的KeyFieldName 属性
treeList.KeyFieldName = "UserId";
}
/// <summary>
/// treeList的FocusedNodeChanged事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void treeList_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e)
{
//获取treeList里面一行的某个值“FullNameByNode(e.Node,0);”里面的“0”是要取值的字段位置
string s = FullNameByNode(e.Node, 0);
//给From窗体赋值
this.Text = s;
}
/// <summary>
/// 获取节点名称
/// </summary>
/// <param name="node"></param>
/// <param name="columnId"></param>
/// <returns></returns>
private string FullNameByNode(TreeListNode node, int columnId)
{
string ret = Convert.ToString(node.GetValue(columnId));
if (node.ParentNode != null)
{
node = node.ParentNode;
ret = node.GetValue(columnId).ToString() + "\\" + ret; //得到所选中行节点的第一个值“\\”是隔开父节点和子节点
}
return ret;
}
调试时,这段代码string ret = Convert.ToString(node.GetValue(columnId));
报未将对象引用设置到对象的实例。而直接运行不进入调试就弹出这样一个窗体,点继续或者“X”关闭,又能够显示出节点数据!请各位高手帮帮忙,小弟急用,谢啦! 展开
代码是这样的:
/// <summary>
/// 窗体加载事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void xFrmTreeListTest_Load(object sender, EventArgs e)
{
//得到所有用户信息(DataTable)
DataTable dt = ufManager.ToDataTableTow();
//显示树
AppendNodess(dt);
}
/// <summary>
/// List集合显示树
/// </summary>
/// <param name="ufList"></param>
/// <param name="p"></param>
private void AppendNodess(DataTable dt)
{
//绑定数据源
treeList.DataSource = dt;
//设置树的ParentFieldName 属性
treeList.ParentFieldName = "UserParentId";
//设置树的KeyFieldName 属性
treeList.KeyFieldName = "UserId";
}
/// <summary>
/// treeList的FocusedNodeChanged事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void treeList_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e)
{
//获取treeList里面一行的某个值“FullNameByNode(e.Node,0);”里面的“0”是要取值的字段位置
string s = FullNameByNode(e.Node, 0);
//给From窗体赋值
this.Text = s;
}
/// <summary>
/// 获取节点名称
/// </summary>
/// <param name="node"></param>
/// <param name="columnId"></param>
/// <returns></returns>
private string FullNameByNode(TreeListNode node, int columnId)
{
string ret = Convert.ToString(node.GetValue(columnId));
if (node.ParentNode != null)
{
node = node.ParentNode;
ret = node.GetValue(columnId).ToString() + "\\" + ret; //得到所选中行节点的第一个值“\\”是隔开父节点和子节点
}
return ret;
}
调试时,这段代码string ret = Convert.ToString(node.GetValue(columnId));
报未将对象引用设置到对象的实例。而直接运行不进入调试就弹出这样一个窗体,点继续或者“X”关闭,又能够显示出节点数据!请各位高手帮帮忙,小弟急用,谢啦! 展开
1个回答
展开全部
private string FullNameByNode(TreeListNode node, int columnId)
{
/*+++++++*/ if(node.GetValue(columnId)==null) {return string.Empty;}
string ret = Convert.ToString(node.GetValue(columnId));
if (node.ParentNode != null)
{
node = node.ParentNode;
ret = node.GetValue(columnId).ToString() + "\\" + ret; //得到所选中行节点的第一个值“\\”是隔开父节点和子节点
}
return ret;
}
treeList_FocusedNodeChanged这个时间,貌似在创建控件的时候都会触发一次,即使没有绑定数据源,取值前判断一下
{
/*+++++++*/ if(node.GetValue(columnId)==null) {return string.Empty;}
string ret = Convert.ToString(node.GetValue(columnId));
if (node.ParentNode != null)
{
node = node.ParentNode;
ret = node.GetValue(columnId).ToString() + "\\" + ret; //得到所选中行节点的第一个值“\\”是隔开父节点和子节点
}
return ret;
}
treeList_FocusedNodeChanged这个时间,貌似在创建控件的时候都会触发一次,即使没有绑定数据源,取值前判断一下
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询