C# 检查当前行是否为数据行

C# 检查当前行是否为数据行,c#,asp.net,C#,Asp.net,我有一个10行的gridview我在每页中显示6行我在每行中有一个文本框和图像按钮当我单击图像按钮时所有功能都在工作但当我单击页面索引时,它在行命令中显示错误我如何在gridview行命令事件中检查行类型是否为数据行。我使用的代码如下 protected void gvgridview1_RowCommand(object sender, GridViewCommandEventArgs e) { GridViewRow gvRow = (GridViewRow)(((Ima

我有一个10行的gridview我在每页中显示6行我在每行中有一个文本框和图像按钮当我单击图像按钮时所有功能都在工作但当我单击页面索引时,它在行命令中显示错误我如何在gridview行命令事件中检查行类型是否为数据行。我使用的代码如下

protected void gvgridview1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
      GridViewRow gvRow = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer);
      TextBox txtgvGroupName = (TextBox)gvRow.FindControl("txtgvGroupName");
      ImageButton imgbtn = (ImageButton)gvRow.FindControl("imgbtn");
      if (e.CommandName == "Edit")
            {
              imgbtn.Visible = false;
            }
    }

您是否尝试检查GridViewRow实例的RowType属性?

检查
e.Row.RowType
,它允许您将RowType与
DataControlRowType
枚举进行比较

[编辑]我想知道这是否与你如何掌握这一排有关。我刚才试过的代码是:

GridViewRow row = Gridview.Rows[int.Parse(e.CommandArgument.ToString())];
之后,我可以很高兴地使用
row.RowType
。也许你值得一试


假设您正在引用System.Data.DataRow,请尝试此操作

GridViewRow gvRow = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer);
DataRow drow = gvRow.DataItem as DataRow

if(drow!=null)
 {
     // row is DataRow
 }
如果(e.Row.RowType==DataControlRowType.DataRow)


然后写下你的情况

这里与datarow有点关系,相反,您需要在
gvgridview1\u row命令的第一行检查
是否(e.CommandSource是ImageButton)
,这很奇怪。根据这一点:GridViewRow具有该属性。我告诉您,在Gridview_row命令中,没有像e.rowtype这样的属性。这不是我要告诉您的。在您的代码中,您有一个GridViewRow(gvRow)的实例,该对象不具有该属性吗?我的代码运行良好。当我单击gridview页面索引以查看下一页时,问题就会发生,其他时间我的页面运行正常fine@Mathew刚刚更新了我的答案,如果你使用排序,你可能想尝试失败,因为Sort的commandArgument是SortExpression。您应该发布您得到的错误。我猜你会因为(ImageButton)e.CommandSource而出错,因为你的索引链接不是ImageButton。是的,很好,谢谢你的帮助,下面的代码很好,字符串strTemp=string.Empty;strTemp=e.CommandSource.ToString();如果(strTemp==“System.Web.UI.WebControls.ImageButton”){我想你可以直接使用
如果(e.CommandSource是ImageButton)
?很高兴听到你的消息是的,这也很有效谢谢我第一次使用它..谢谢一次again@Mathew,我很高兴你已经解决了你的问题,如果是这样,请将答案标记为已接受。