在GridView中绑定数据后。通过checkbox选中多行,然后我要取到选中的所有行中的某一列的值,应该怎么写呢?

解决方案 »

  1.   

    把你要取的值,一般是ID,就放到ck中
      

  2.   

    绑定的第一列是
    <th class="th_left" width="80">
       <input type="checkbox" id="all_check"/>
     </th>
    [code=JScript]        
            function CheckSelected()
               {
        var chks = document.getElementsByTagName("input");
    var a =new Array();
    var j;
        for(i=0;i<chks.length;i++)
        {
            if(chks[i].checked&&chks[i].type=="checkbox")
            {
              for(j=i;j<i+1;j++)
               {
                a[j]=i;
                }
            }
        }
        alert(a);
        if(a!="")
        {
           location.href='本页?Edit='+a;
         }
         else
         {
           alert('请先选择选项后再提交!');
           return false;
         }
        }
    [code]
    a就是你的选择的ID集合
    通过location.href=本页?Edit='+a;传到后台 
    在后台处理~~
      

  3.   

    http://topic.csdn.net/u/20090907/18/b280bdb5-ff16-43c9-bc01-0e088d354d3b.html?seed=1812854434&r=59632960
      

  4.   

     for   (int   i   =   0;   i   <   this.GridView1.Rows.Count;   i++) 
          { 
               b   =   ((CheckBox)GridView1.Rows[i].FindControl( "CheckBox1 ")).Checked; 
               //   如果CheckBox被选中则删除文档 
                 if   (b) 
                    { 
                         //   获取文档ID 
                         string str =   GridView1.Rows[i].Cells[0].Text;
                              
                     } 
           } 
      

  5.   

    例如checkbox的ID是chk,可以这样得到所有的行号:private List<int> CheckedChk = new List<int>();private void getCheckedChk()
    {
        foreach (GridViewRow row in this.GridView1.Rows)
        {
            var chk = row.FindControl("chk") as CheckBox ;
            if(chk !=null && chk.Checked )
                CheckedChk.Add(row.DataItemIndex);
        }
    }这里收集到所有选中的航的DataItemIndex。类似地,你也可以改为收集 GridView1.DataKeys[row.DataItemIndex]。
      

  6.   


    string val = "";
    foreach (GridViewRow dr in GridView1.Rows)
    {
        // i是checkbox所在列,从0开始计数 CheckBox1是checkbox的id
        if ((dr.Cells[i].FindControl("CheckBox1") as CheckBox).Checked)
        {
             // j是你要得到值的列 TextBox1是得到值那列的id
             if ("" != (dr.Cells[j].FindControl("TextBox1") as TextBox).Text.Trim())
             {
                val = (dr.Cells[j].FindControl("TextBox1") as TextBox).Text.Trim();
             }    
         }
    }
      

  7.   

    通常,可以在一个按钮或者其它触发后台处理的事件中调用getCheckedChk方法。不要放在Page_Load中。
      

  8.   


    <asp:GridView ID="GridView1" runat="server">
                    <Columns>
                    <asp:TemplateField  HeaderText="选择">
                    <ItemTemplate>
                         <input type="checkbox" id="name1" name="userid" checked="checked" value='<%#Eval("字段名").ToString() %>' />
                    </ItemTemplate>
                    </asp:TemplateField>
                    
                    </Columns>
            </asp:GridView>
    //直接将你想要的值绑定在选择项的value中,在后台去request即可。如:一个都不选,则为null
    if (Request["userid"] != null)
    {
        string caiwuid = Request["userid"].ToString();
    }
      

  9.   

    注意不要去想当然地去处理“某一列的值”,否则这样的程序就是在别人更新前台界面设计时会垮掉。在GridView中绑定值可能随时改变,所以要想知道原始的用于的绑定的数据,不应该到GridView去取某一列的值,你应该重新到数据源上去取某一列值。
      

  10.   

    后台用datasource绑定后,前台用js遍历写入到hidden也是可以的,
      

  11.   

    for (int i = 0; i <= GridView1.Rows.Count - 1 ; i++)
            {
                           CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
                if (cbox.Checked == true)
                {
                    string md = GridView1.Rows[i].Cells[2].Text;             
                   
                }        }
    我是这样写的  但是还是取不到这一行列值。
      

  12.   

    foreach (GridViewRow dr in GridView1.Rows)
    {
    CheckBox chk= (CheckBox)gvr.FindControl("CheckBox1");
        if (chk!=null&& chk.Checked)
        {
    GridViewRow row = chk.NamingContainer as GridViewRow;
    string s=dr.Cells[0].Text;}
      

  13.   

    楼上的,你的代码里面的gvr是什么?没有见声明啊
      

  14.   

    我好像问问这个代码是不是应该写在protected void CheckBox1_CheckedChanged(object sender, EventArgs e)事件里面啊?
      

  15.   

    http://blog.csdn.net/xianfajushi/archive/2008/11/30/3413317.aspx