我用TreeView控件做了一个带checkbox节点的树,当用户点击选择若干个节点前面的checkbox后,单击按钮提交,服务器段方法便利树取出被选中的节点的ID存放到ArrayList中,但是这个得到的总是空的ArrayList,不知道这是怎么回事呢?TreeView的加载和显示是没有问题的,请大家帮忙看看,代码如下:public class RoleManagement : System.Web.UI.Page
{
protected Microsoft.Web.UI.WebControls.TreeView TreeView1;
protected System.Web.UI.WebControls.Button BtnSubmit;
private ArrayList checkedNodeList;private void Page_Load(object sender, System.EventArgs e)
{
......}
......//按钮事件处理方法
private void BtnSubmit_Click(object sender, System.EventArgs e)
{
if (this.TreeView1.Nodes.Count > 0)
{
this.checkedNodeList = new ArrayList();
TreeNodeCollection tnc = this.TreeView1.Nodes;
for (int i=0;i<tnc.Count;i++)
{
GetCheckedNodes(tnc[i]);
}
//输出选择的权限的数量
Response.Write(this.checkedNodeList.Count.ToString());
}
}//递归方法,遍历树返回选中的节点字符串
public void GetCheckedNodes(TreeNode treeNode)
{
TreeNode node = treeNode; if (node.Nodes.Count > 0)
{
if (node.Checked == true)
{ this.checkedNodeList.Add(node.ID);
}
TreeNodeCollection tnc = node.Nodes;
for (int i=0;i<tnc.Count;i++)
{
GetCheckedNodes(tnc[i]);
}
}
else
{
if (node.Checked == true)
{
Response.Write(node.ID.ToString());
this.checkedNodeList.Add(node.ID);
}
}
}
{
protected Microsoft.Web.UI.WebControls.TreeView TreeView1;
protected System.Web.UI.WebControls.Button BtnSubmit;
private ArrayList checkedNodeList;private void Page_Load(object sender, System.EventArgs e)
{
......}
......//按钮事件处理方法
private void BtnSubmit_Click(object sender, System.EventArgs e)
{
if (this.TreeView1.Nodes.Count > 0)
{
this.checkedNodeList = new ArrayList();
TreeNodeCollection tnc = this.TreeView1.Nodes;
for (int i=0;i<tnc.Count;i++)
{
GetCheckedNodes(tnc[i]);
}
//输出选择的权限的数量
Response.Write(this.checkedNodeList.Count.ToString());
}
}//递归方法,遍历树返回选中的节点字符串
public void GetCheckedNodes(TreeNode treeNode)
{
TreeNode node = treeNode; if (node.Nodes.Count > 0)
{
if (node.Checked == true)
{ this.checkedNodeList.Add(node.ID);
}
TreeNodeCollection tnc = node.Nodes;
for (int i=0;i<tnc.Count;i++)
{
GetCheckedNodes(tnc[i]);
}
}
else
{
if (node.Checked == true)
{
Response.Write(node.ID.ToString());
this.checkedNodeList.Add(node.ID);
}
}
}
好像是因为我在上一个TreeView中用的控制checkbox选择的javascript方法的问题,在提交服务器时用的是服务器端按钮控件方法,不知为什么没有取出checkbox的状态来?