【问题标题】:Access Top Row In Gridview from DataTable When Button Clicked单击按钮时从 DataTable 访问 Gridview 中的顶行
【发布时间】:2013-07-25 20:20:40
【问题描述】:

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

【问题讨论】:

  • 你用什么来过滤你的 GridView?
  • @GarrisonNeely DataTable newDataTable = dt.AsEnumerable() .Where(r => !ListLinkedIds.Contains(r.Field("LinkedTicketId"))) .CopyToDataTable();
  • 已经过滤了最终的DataTable是newDataTable
  • @GarrisonNeely 我想做的是如何访问该顶行的数据,我想知道每列和索引 [0] 内的值

标签: c# asp.net gridview


【解决方案1】:

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

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

【讨论】:

  • 谢谢我正在寻找的东西。
【解决方案2】:

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

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


改为访问数据行...

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


奖金信息:

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

【讨论】:

  • 这就是我需要的我如何使用索引 [0] 访问 DataRow,我想检索该顶行的每一列的数据。
  • @Apollo 在我发布的链接的第一个答案中查看他的做法。我已经用过几次了,但我必须再看一遍代码,反正它不会在 C# 中。
猜你喜欢
  • 1970-01-01
  • 2012-01-27
  • 1970-01-01
  • 1970-01-01
  • 2014-10-18
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多