主要需求是这样的,有一个用datalist绑定的checkbox,它的id我想从后台动态生成,
比如说我绑定了10个checkbox,那第一个checkbox的id为chk0,第二个为chk1.
依次类推,从后台该怎么生成呢?

解决方案 »

  1.   

    我是通过datalist.items.count来得到递归数字的,但效果不甚理想,
    得不到想要的代码:
    //拼接用户checkbox的id名称
        protected string GetForID()
        {
            string id = "";
            for (int i = 0; i < dlUnit.Items.Count; i++)
            {
                DataList dlUser = dlUnit.Items[i].FindControl("dlUser") as DataList;
                for (int j = 0; j < dlUser.Items.Count; j++)
                {
                    id = Convert.ToString("_" + j);
                    //MessageBox.Show(id);
                }
            }
            return id;
        }该方法在checkbox的id里调用,外层的for循环是外层的datalist,checkbox嵌套在里层的datalist里
      

  2.   

    int id=1;
    protected string GetForID()
        {
    return ch+"_"+id.ToString();
    id++;
        }
    这样不行吗?
      

  3.   

    int id=0;
    protected string GetForID()
      {
    id++;
    return ch+"_"+id.ToString();
      }应该这样 先return 了不执行 id++了
      

  4.   

    绑定的时候使用Container.ItemIndex
      

  5.   

    由于我是绑了两个datalist,所以内层的datalist会把索引一直递归下去,
    5楼的方案是我想要的,还是要谢谢各位!
      

  6.   

    <%# Container.ItemIndex+1 %>
      

  7.   

    private int i = 0;
    protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
        {        
            CheckBox id = (CheckBox)e.Item.FindControl("cb");
            id.ID = "chk"+i.ToString();
            i++;
            //Response.Write(id.ID.ToString());      
        }
    得到的是DataList1_ctl00_chk0~DataList1_ctl00_chk5,前面DataList1_ctl00_是ClientID,后台调用需要clientid+"_"+设置id