如何在gridview中找到特定行的值?

时间:2011-08-06 08:48:07

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

如何在gridview中找到特定行的值。假设gridview有10行4列。我知道我们可以从行索引中找到行号,但是我们怎样才能找到第5行第2列的值(根据我的gridview)或者知道单元格的值?

4 个答案:

答案 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;