如何在gridview中找到特定行的值。假设gridview有10行4列。我知道我们可以从行索引中找到行号,但是我们怎样才能找到第5行第2列的值(根据我的gridview)或者知道单元格的值?
答案 0 :(得分:4)
使用以下内容:
CustomersGridView.Rows[rowIndex].Cells[cellIndex].Text
有关.Rows集合的更多信息
如果您对FindControl
方法感兴趣,最适合您的活动是RowDataBound:
void CustomersGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
var control = e.Row.Cell[cellIndex].FindControl("ControlID");
e.Row.Cells[1].Text = ((TypeOfControl)control).Text;
}
}
答案 1 :(得分:3)
假设每列有一个单元格,这应该可以解决问题:
string cellValue = GridView1.Rows[4].Cells[1].Text;
这将为您提供第5行第2列的值。
根据行的构建方式(例如,如果一列有DropDownList或其他一些此类控件),您可能最好不要执行FindControl(controlID)
。
<强>更新强>
假设您在ID =“ddlMyDropDown”的第二列中有DropDownList
:
DropDownList ddl = (DropDownList)GridView1.Rows[4].FindControl("ddlMyDropDown");
将代码放入哪个事件取决于您尝试查找值的原因。如果您可以举例说明何时/为什么需要获取该值,我们可以告诉您它应该进入哪个事件。
更新2
假设行中有一个按钮,处理RowCommand
事件:
protected void GridVie1_RowCommand(object sender, GridViewCommandEventArgs e)
{
rowIndex = Convert.ToInt32(e.CommandArgument);
DropDownList ddl = (DropDownList)GridView1.Rows[rowIndex].Cells[1].FindControl("ddlMyDropDown");
// Do something
}
请谨慎,因为只要单击行中的按钮就会触发RowCommand,因此您需要确保单击了哪个按钮。如果设置了按钮,可以使用e.CommandName
来获取按钮的CommandName,但要注意有一些预定义的名称。
有关详细信息,请参阅GridView.RowCommand Event。
如果您可以使用更多信息更新您的问题(例如,为什么您需要获取值以及与GridView的交互将启动该过程,例如按钮单击),可以提供更精确的答案。
我已经完成了整个晚上的工作,但明天我会回来查看这个帖子。
答案 2 :(得分:2)
如果您知道单元格的值,那么我们可以找到行
protected void GridView1_DataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (e.Row.Cells[0].Text.Contains("sometext"))
{
//code here..
}
}
}
答案 3 :(得分:1)
string cellText = gridView.Rows[5].Cells[2].Text;