单击按钮时从DataTable访问网格视图中的首行

本文关键字:视图 网格 访问 按钮 DataTable 单击 | 更新日期: 2023-09-27 18:25:02

我有一个经过过滤的Gridview。我的问题是,当点击按钮时,在过滤后,我如何通过DataTable访问过滤后的Gridview的顶行

SqlDataAdapter da = new SqlDataAdapter("SELECT Id, Num, Trans, S ,Est_Trans,Linked FROM vwOpenTcktSum_TransTypeTotal WHERE (Q = @Q)  AND (S = @S)", cs);
da.SelectCommand.Parameters.AddWithValue("@Q", Q);
da.SelectCommand.Parameters.AddWithValue("@S", S);
DataSet ds = new DataSet();
da.Fill(ds);
DataTable dt = new DataTable();
 dt = ds.Tables[0];
DataTable newDataTable = dt.AsEnumerable()
         .Where(r => !ListLinkedIds.Contains(r.Field<int>("LinkedTicketId")))
          .CopyToDataTable();
 Session["Data"] = ds;
 gvMain.DataSource = newDataTable; //Datasource
 gvMain.DataBind();

 protected void btnGetNext_Click(object sender, EventArgs e)
 {
      //Get Top Row from Gridview
 }

单击按钮时从DataTable访问网格视图中的首行

在网格视图中的RowIndex之后,可以转到每列的Cell[index]。

GridView1.Rows[0].Cells[0].Text

绑定后无法访问数据源

不幸的是,单击按钮时您将无法访问数据表本身,因为数据源是在绑定到gridview控件后处理的。您可以从数据表中提取数据的唯一时间是最初创建数据表或将数据表绑定到网格视图行时。为了访问生命周期中的行数据绑定部分,我认为gridview属性被称为OnRowDataBound,但我通常使用中继器控件,所以我不能根据经验来判断。


改为访问数据行

话虽如此,您仍然可以从行本身访问数据。这可以通过使用发送者的父(或祖先)来完成(假设发送者是gridview行中的一个按钮)。将发送方的父级强制转换为gridview,然后在其rows集合中查找所需的行,在这种情况下,第一行的索引可能为0。


奖金信息:

我本来打算给你打一个例子,但N4TKD评论中提供的链接很好地解释了这一点。如果你错过了,它又来了:

  • 从ASP.NET GridView获取DataRow-堆栈溢出