如何获取与选中复选框对应的行,然后写出值

本文关键字:然后 复选框 何获取 获取 | 更新日期: 2023-09-27 17:55:23

各位程序员大家好,

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

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

。.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;
    }

任何帮助将不胜感激。

干杯

如何获取与选中复选框对应的行,然后写出值

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

更新 这是我的意思的快速示例。 但是在查看代码时,网格视图的第二个单元格中似乎没有任何文本,实际上您的网格视图只有一个基于您提供的代码的单元格。

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;
}