我能够以编程方式选择并扩展到特定树节点,但无法刷新它以反映表中的大多数当前数据。有Treeview1.Refresh()方法吗?或类似的东西?任何帮助将不胜感激。我有一个树视图,我通过让用户输入数据并单击按钮将子节点添加到父节点。在完成对表的插入之后,我希望父节点刷新并显示所有子条目。
protected void PopulateNode(Object sender, TreeNodeEventArgs e)
{
switch (e.Node.Depth)
{
case 0:
PopulateChild(e.Node);
break;
default:
//PopulateChild(e.Node);
break;
}
}
protected void PopulateChild(TreeNode node)
{
DataSet ResultSet = RunQuery("Select Id From tbl");
if (ResultSet.Tables.Count > 0)
{
foreach (DataRow row in ResultSet.Tables[0].Rows)
{
TreeNode newNode = new TreeNode();
newNode.Text = row["Id"].ToString();
newNode.Value = row["Id"].ToString();
newNode.PopulateOnDemand = true;
newNode.SelectAction = TreeNodeSelectAction.Expand;
node.ChildNodes.Add(newNode);
}
}
}
DataSet RunQuery(String QueryString)
{
String ConnectionString = "asdasdasdasd";
OleDbConnection DBConnection = new OleDbConnection(ConnectionString);
OleDbDataAdapter DBAdapter;
DataSet ResultsDataSet = new DataSet();
try
{
DBAdapter = new OleDbDataAdapter(QueryString, DBConnection);
DBAdapter.Fill(ResultsDataSet);
DBConnection.Close();
}
catch (Exception ex)
{
if (DBConnection.State == ConnectionState.Open)
{
DBConnection.Close();
}
}
return ResultsDataSet;
}
答案 0 :(得分:0)
唯一的选择是重新加载数据表并重新创建节点http://www.tek-tips.com/faqs.cfm?fid=6177
使用Treeview的最佳方式是使用XMLDataSource
。您可以将TreeView与它绑定并重新绑定它,而不是循环遍历行/列并创建每个节点。
参考:http://quickstarts.asp.net/QuickStartv20/aspnet/doc/ctrlref/navigation/treeview.aspx
This link为您提供转换other datasource to XMLDataSource
然后使用它绑定到treeviewl的想法:
将treeview绑定到xmldatasbource后,需要刷新数据源,然后使用DataBind()刷新树视图。
<datasource>.DataBind()
treeview1.DataBind()
另外,为objectdatasource设置EnableCaching = false
。
答案 1 :(得分:0)
您正在使用的TreeView
有一个事件SelectedNodeChanged
,该事件会针对该TreeNodeSelectAction
的{{1}}属性值中指定的任何事件触发。在您的情况下,我可以在您的代码中看到值TreeNode
。
展开节点时,Expand
会被SelectedNodeChanged
函数触发并处理,该函数由html中指定的PopulateNode
属性指定。
我们在这里可以做的包括:
A-如果已经展开则折叠,然后展开树节点以重新填充其子节点。
B-将OnSelectedNodeChanged
属性值更改为TreeNodeSelectAction
。在这里,我们还有一个案例,其中节点将被重新填充,即节点选择。
C-在需要时调用SelectExpand
函数,并将PopulateNode
对象分配给其TreeNode
参数,并将sender
分配给其new TreeNodeEventArgs()
参数。
参考文献:
TreeNodeSelectAction Enumeration,TreeView.TreeNodePopulate Event,TreeNode.SelectAction Property