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

本文关键字:gridview | 更新日期: 2023-09-27 18:04:45

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

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

使用如下:

CustomersGridView.Rows[rowIndex].Cells[cellIndex].Text

关于。rows collection的更多信息

如果您对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;
    }
}

假设每列一个单元格,这应该可以做到:

string cellValue = GridView1.Rows[4].Cells[1].Text;

这将给你第5行第2列的值

根据如何构建行(例如,如果一个列有DropDownList或其他类似的控件),您可能最好使用FindControl(controlID)

假设你有一个DropDownList在第二列ID="ddlMyDropDown":

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将启动该过程,如按钮点击),一个更精确的答案可以提供。

我今晚差不多结束了,但我明天再检查这个线程。

如果你知道单元格的值,那么我们就可以找到行

protected void GridView1_DataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if (e.Row.Cells[0].Text.Contains("sometext"))
        {
            //code here..
        }
    }
}