public void GetTreeCheck(TreeView tv)
    {
        OleDbConnection conn = OleDb();
        tv.Nodes.Clear();
        using (OleDbCommand cmd = new OleDbCommand())
        {
            cmd.Connection = conn;
            cmd.CommandText = "select * from DL";
            cmd.CommandType = CommandType.Text;
            DataSet ds = new DataSet();
            OleDbDataAdapter da = new OleDbDataAdapter(cmd);
            da.Fill(ds);
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                TreeNode tn = new TreeNode();
                tn.Text = ds.Tables[0].Rows[i]["dlname"].ToString() + "<input type='checkbox'id='cbdl' runat='server' />";                //"<asp:CheckBox ID='CheckBox1' runat='server' />"+
                tn.Value = ds.Tables[0].Rows[i]["ID"].ToString();
                GetTreenodeCheck(tn);
                tv.Nodes.Add(tn);
            }
        }
        conn.Close();
    }
动态生成树形菜单,我在TreeNode.Text里放了一个"<input type='checkbox'id='cbdl' runat='server' />
怎么样获取cbdl选中,
我用this.tvdl.Nodes.FindControl("cbdl") as CheckBox  找不到cbdl的控件..
高手帮忙简答下

解决方案 »

  1.   

    动态生成的控件,ID改变了,一般的是“$_控件ID”。
    你可以在生成的页面先查看源文件,看一下
      

  2.   

    换成 this.tvd1.FindControl("cbdl") as CheckBox 试试
    Nodes好像是指树的定一层节点
      

  3.   

    我看了一下,源文件生成 &lt;input type='checkbox'id='cbdl' runat='server' />
    少了个<,怎么会这样。
    应该怎么修改,帮下解决下。
      

  4.   

    如果用母版页的话,看看生成的html里的控件id
    就像1楼说的问题
      

  5.   

    可以通过表单获取:
    Request.Form["cbdl"]用这种方式肯定能取到值
      

  6.   

    Request.Form["cbdl"].toString()
    输出一下看看 是什么值
      

  7.   

    是生成了 &lt;input type='checkbox'id='cbdl' runat='server' />
    少了左<号..怎么会这样,该怎么解决啊 。
      

  8.   

    是生成了 &lt;input type='checkbox'id='cbdl' runat='server' />
    少了左 <号..怎么会这样,该怎么解决啊 。
    把这里  tn.Text = ds.Tables[0].Rows[i]["dlname"].ToString() + " <input type='checkbox'id='cbdl' runat='server' />";   的双引号改成单引号试试
      

  9.   

      tn.Text = ds.Tables[0].Rows[i]["dlname"].ToString() + '<input type='checkbox'id='cbdl' runat='server' />';   
      

  10.   

    把<input type='checkbox'id='cbdl' runat='server' />
    换成
    &lt; input type='checkbox'id='cbdl' runat='server' &gt;
    试试
      

  11.   


    不可以,即使获取到值,还是不能判断ID为cbdl是否是选中的啊。
      

  12.   


     这样变成了  直接在页面显示的就是 <input type='checkbox'id='cbdl' runat='server' />
    没有变成复选框了.
      

  13.   

    我这里没有什么问题,你看你的前面dlname取值有什么问题,或者说它含有转义字符
    导致,先把ds.Tables[0].Rows[i]["dlname"].ToString() 用"test"代替试试.
      

  14.   


    生成<a id="tvdln0" href="javascript:TreeView_ToggleNode(tvdl_Data,0,tvdln0,' ',tvdln0Nodes)"><img src="/bastBuy/WebResource.axd?d=u0f6Q_ix0WC5yQFJkNE3XVvNZgx0PNYSmWXqNAnsmUM1&amp;t=633888882800000000" alt="展开 BizModule 1 Furniture for Home&lt;input type='checkbox'id='cbdl' runat='server'>" style="border-width:0;" /></a>是不是&amp这里出了问题?如果是,应该怎么修改,我现在知道怎么取值和判断选中了。
    就是转义成了&lt;input type='checkbox'id='cbdl' runat='server' /> 
    但页面又是显示复选框的
    帮下忙,谢谢
      

  15.   

    我在TreeNode.Text里放了一个" <input type='checkbox'id='cbdl' runat='server' /> 要知道,这个Text是原封不动的扔给浏览器的,而不会被解析为服务器端控件的
    你在Text里写控件,是不能加runat=server的至于在后台取值,必须这么写:
    <input type='checkbox' id='cbdl' name='cbdl' value='abc' />那么在后台用Request.Form["cbdl"]取值,
    如果选中,Request.Form["cbdl"]就等于abc
    没选中,Request.Form["cbdl"]就等于空
      

  16.   


    string test = ds.Tables[0].Rows[i]["dlname"].ToString();
    tn.Text = test + "<input type='checkbox'id='cbdl' runat='server'>";
    你是说这样吗?
    我改了试了下,还是一样。<转成&lt;
      

  17.   


    加个runat="server"是没问题的,问下你是哪里的,这女的好像很熟..
      

  18.   

    和刚才有什么区别呢? tn.Text = "test" + " <input type='checkbox'id='cbdl' runat='server'>";
      

  19.   


    问题是我的TreeNode是动态生成的,这块必须要加上一个复选框,满足客户要求的。
    只要在源文件是<input type='checkbox'id='cbdl' runat='server'>
    而不是&lt;input type='checkbox'id='cbdl' runat='server'>
    如果是<input type='checkbox'id='cbdl' runat='server'>
    我已经找过办法了.
     HtmlInputCheckBox cb = this.Page.FindControl("cbd") as HtmlInputCheckBox;
    这样就可以取到.
      

  20.   

    我现在的问题是怎么让他在源文件显示<input type='checkbox'id='cbdl' runat='server'>
      

  21.   

    Request.Form["cbdl"]能取到 cbdl的value  给cbdl加个value吧
      

  22.   

    加了也没有。
    Request.Form["cbdl"]就找不到了。
    现在问题不是取值。
    是<input type='checkbox'id='cbdl' runat='server'>在源文件显示
    &lt;input type='checkbox'id='cbdl' runat='server'>