我使用下面的代码将新类别添加到我的数据库中的类别表中,但 selectedNode 的返回值始终为空。问题是什么?
protected void btnAddNode_Click(object sender, EventArgs e)
{
string selectedNodeValue = CategoryTreeView.SelectedNode.Value;
using (mydbEntities context = new mydbEntities())
{
int id = Int32.Parse(selectedNodeValue);
Category obj = new Category();
obj.Name = "bla bla";
obj.CategoryParentId_FK = id;
context.Categories.AddObject(obj);
context.SaveChanges();
}
bindTreeView();
}
还有一件事,我的 categorytreeview 在更新面板中
这是我的标记
<div id="MyTreeDiv" class="TreeContiner">
<asp:TreeView ID="CategoryTreeView" runat="server" ShowLines="true"
LineImagesFolder="images/treeRTLlines" CssClass="AspNet-TreeView"
onselectednodechanged="CategoryTreeView_SelectedNodeChanged">
<NodeStyle CssClass="AspNet-TreeView-Nodes" />
<SelectedNodeStyle CssClass="AspNet-TreeView-Selected-Nodes" />
</asp:TreeView>
<div class="treeTools">
<asp:LinkButton ID="btnAddNode" runat="server" CausesValidation="False"
CssClass="treeToolsLnk"
Text="" onclick="btnAddNode_Click"><img src="Images/refresh.png" /></asp:LinkButton>
这是我的 bindtreeview 方法
#region bindTreeView
private void bindTreeView()
{
CategoryTreeView.Nodes.Clear();
using (mydbEntities context = new mydbEntities())
{
var parents = context.Categories.Where(a => a.CategoryParentId_FK == null).OrderBy(a => a.Name);
if (parents.Any())
{
foreach (var p in parents)
{
TreeNode root = new TreeNode(p.Name, p.Id.ToString());
root.SelectAction = TreeNodeSelectAction.Select;
CreateNode(root);
CategoryTreeView.Nodes.Add(root);
}
}
}
}
void CreateNode(TreeNode node)
{
using (mydbEntities context = new mydbEntities())
{
int p = Int32.Parse(node.Value.ToString());
var childrens = context.Categories.Where(a => a.CategoryParentId_FK == p).OrderBy(a => a.Name);
if (childrens.Any())
{
foreach (var c in childrens)
{
TreeNode tnode = new TreeNode(c.Name, c.Id.ToString());
tnode.SelectAction = TreeNodeSelectAction.Select;
node.ChildNodes.Add(tnode);
CreateNode(tnode);
}
}
}
}
#endregion