如何获取与选中复选框对应的行,然后写出值
本文关键字:然后 复选框 何获取 获取 | 更新日期: 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;
}