0

我有一个经过过滤的 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
 }
4

2 回答 2

1

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

GridView1.Rows[0].Cells[0].Text
于 2013-07-25T20:48:15.770 回答
0

绑定后无法访问数据源...

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


而是访问数据行...

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


奖金信息:

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

于 2013-07-25T20:34:52.007 回答