GridView中有两列,第一列是选择列,都是checkbox,第二列是数据列,从数据库中读出数据,想要的效果是如果用户选择一个checkbox,则获得这个checkbox对应的数据列的数据,在cs文件中如何写?

解决方案 »

  1.   

    在模板列里放checkbox和textbox控件,在提交的时候去遍历整个gridviewItem不就可以了
      

  2.   

            for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                CheckBox chb = (CheckBox)GridView1.Rows[i].FindControl("chkSelected");
                if (chb.Checked)
                {
                   你要读的数据
                    //strTxt = strTxt + "'" + GridView1.DataKeys[i].Value.ToString().Trim() + "'" + ",";
                }
            }
    循环
      

  3.   

            for (int i = 0; i < GridView1.Rows.Count; i++) 
            { 
                CheckBox chb = (CheckBox)GridView1.Rows[i].FindControl("chkSelected"); 
                if (chb.Checked) 
                { 
                  你要读的数据 
                    //strTxt = strTxt + "'" + GridView1.DataKeys[i].Value.ToString().Trim() + "'" + ","; 
                } 
            } 
    正解。
      

  4.   

    额。这个GridView中应该有个键值吧?
    for(int i = 0;i<GridView.rows.count;i++)
    {
    checkbox chk = (checkbox )GridView.rows[i].FindControl("checkbox的控件名称")
    if(chk.Checked == true)
    {
    根据键值从数据库中读出数据
    }
    } 不知道能不能帮到你~
      

  5.   

    如果仅仅是想得到数据列的内容这样就可以了
     for (int i = 0; i < GridView1.Rows.Count; i++) 
            { 
                CheckBox chb = (CheckBox)GridView1.Rows[i].FindControl("chkSelected"); 
                if (chb.Checked) 
                { 
                   str=GridView1.Rows[i]["列名"].ToString();
                } 
            } 
      

  6.   

           for (int i = 0; i < GridView1.Rows.Count; i++) 
            { 
                CheckBox chb = (CheckBox)GridView1.Rows[i].FindControl("chkSelected"); 
                if (chb.Checked) 
                { 
                  你要读的数据 
                    //strTxt = strTxt + "'" + GridView1.DataKeys[i].Value.ToString().Trim() + "'" + ","; 
                } 
            } 
      

  7.   

    不用遍历的话如果点击后checkbox值会变化用CellValueChanged事件也可以
    不过感觉你这不太合理啊,为啥要点击checkbox再选中相应数据呢
      

  8.   

            for (int i = 0; i < GridView1.Rows.Count; i++) 
            { 
                CheckBox chb = (CheckBox)GridView1.Rows[i].FindControl("chkSelected"); 
                if (chb.Checked) 
                { 
                  你要读的数据 
                    //strTxt = strTxt + "'" + GridView1.DataKeys[i].Value.ToString().Trim() + "'" + ","; 
                } 
            } 
      

  9.   

    “选择一个checkbox,则获得这个checkbox对应的数据列的数据?”是不是得到此checkbox对应行数据啊?
    要是这样的话,写在RowEditing函数中就好了
    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
           GridView1.Rows[e.NewEditIndex].Cells[…].Text.Trim();
          //用它获得此行对应的各列数据!
        }