怎么做才能获得分别检查复选框的行,然后写出值?

时间:2013-01-23 20:27:08

标签: c# asp.net visual-studio gridview checkbox

Hello其他程序员,

现在我有一个网页,通过网格视图显示数据表。这很好用。我还在视图的开头插入了一列复选框。这也很好。但是当我尝试从选中相应复选框的行中的单元格中检索信息时,我得到一个空字符串。

以下是与此问题相关的代码部分:

的.aspx:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.IsPostBack)
        {
            return;
        }
        else
        {

        }

        //server connections and whatnot//

        OleDbCommand c0 = new OleDbCommand(sql0, myConnection);
        myAdapter.SelectCommand = c0;
        DataSet ds0 = new DataSet("Contacts");
        myAdapter.Fill(ds0);
        DataTable dt0 = new DataTable(); 
        dt0 = ds0.Tables["Contacts"];
        DataView view = new DataView();
        view.Table = dt0;
        GV0.DataSource = view;
        GV0.DataBind();

        myConnection.Close();
    }

的.cs:

    /**
     * WHY U NO WORK?!
     */
    public void Dedupe(Object o, EventArgs e)
    {
        String output = "start ";
        foreach (GridViewRow row in GV0.Rows)
        {
            CheckBox cb = (CheckBox)row.FindControl("CheckBox1");
            if (cb.Checked == true)
            {
                output += row.Cells[1];
            }
        }
        Label1.Text = output;
    }

非常感谢任何帮助。

干杯

1 个答案:

答案 0 :(得分:0)

只是想一想,但在foreach循环中,您可能需要检查正在循环的当前行的RowType属性,并确保将其设置为DataRow。或者您可以使用LINQ语句仅返回具有RowType == DataRow的行并循环遍历该行。

更新以下是我的意思的快速示例。但是在查看代码时,看来你的gridview的第二个单元格中没有任何文本,实际上你的gridview只有一个基于你提供的代码的单元格。

public void Dedupe(Object o, EventArgs e)
{
    String output = "start ";
    IEnumerable<GridViewRow> rows = from r in GV0.Rows
                                    where r.RowType == DataControlRowType.DataRow
                                    select r;
    foreach (GridViewRow row in rows)
    {
        CheckBox cb = (CheckBox)row.FindControl("CheckBox1");
        if (cb.Checked)
        {
            output += row.Cells[1];
        }
    }
    Label1.Text = output;
}