【问题标题】:How to find the value of particular row in gridview?如何在gridview中找到特定行的值?
【发布时间】:2011-08-06 08:48:06
【问题描述】:

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

【问题讨论】:

  • 发布您的 GridView 的标记和相关的事件代码将帮助我们帮助您解决您遇到的问题。

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


【解决方案1】:

使用以下内容:

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

【讨论】:

  • cellIndex中需要给出什么?
  • @Xor power 您必须将控件转换为所需的类型。更新了答案。
【解决方案2】:

假设每列有一个单元格,这应该可以解决问题:

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.RowCommand Event

如果您可以使用更多信息更新您的问题(即,为什么需要获取值以及与 GridView 的哪些交互会启动该过程,例如单击按钮),则可以提供更准确的答案。

我今晚差不多完成了,但我明天再回来看看这个帖子。

【讨论】:

  • FindControl 怎么办?另外,把代码放在哪里,我的意思是哪个事件?
  • 从上面的例子(ddl),我没有得到用户点击了哪一行。我不能作为命令参数给出,因为我已经提供了 ID(主键列)作为命令参数。因此,要么我需要知道点击了哪一行,要么如果我将行索引作为命令参数,我需要知道 ID(主键列)的值
  • 按行点击,如果您的意思是点击了行中的按钮,您可以处理 RowCommand 事件。这就是你在做的吗?
  • 是的......类似的东西......我需要知道点击了哪一行或ID的值......
  • 谢谢!。但是 rowcommand 事件没有被触发?我仍然与 gridview 绑定..
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 2020-10-04
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    • 2021-11-19
    • 2014-09-14
    • 1970-01-01
    • 2022-10-12
    • 1970-01-01
    相关资源
    最近更新 更多