0

我有一个用户捕获数据的网络表单。此数据会影响 Gridview 中的其他数据。我想纠正一个 DetailsView 类型的控件,如果需要更新主数据的文本框和下拉列表中的数据发生更改,则该控件使更新按钮可见。

我在表单上有一个gridview,当用户单击更新时,我想使用OrderIdGridview 上的主键更新数据库中的所有行。

如果我将代码作为每个文本框和下拉框并调用一个名为的例程,DoUpdate那么这将起作用。但是它有点慢,因为每次更改都会强制更新,所以我认为最好显示一个更新按钮,然后用户可以单击该按钮进行更新。

当从按钮例程调用例程时,尽管 gridview 没有行。我假设我需要 findcontrol (gridview) 或其他东西,但不知道在什么中找到它。

以下是在按钮后面事件中调用时有效的代码,但是当作为按钮后面代码的一部分调用时,gridview 返回行数 0:

  List<string> _OrderIds = new List<string>();

  foreach (GridViewRow gvr in gvOrderLines.Rows)
  {
    Label myOrderIDLablel = (Label)gvr.FindControl("lblOrderID");    //find control since it is a template field
    _OrderIds.Add(myOrderIDLablel.Text);
  }

gridview 在 ASP 页面中定义

<asp:GridView ID="gvOrderLines" runat="server" AutoGenerateColumns="False" 
        DataSourceID="odsOrderDetail" 
4

1 回答 1

0

根据我上面的评论,您可能想要执行以下操作:

List<string> _OrderIds = new List<string>();

  DataTable table = gvOrderLines.DataSource as DataTable;

  foreach (GridViewRow gvr in table.Rows)
  {
    Label myOrderIDLablel = (Label)gvr.FindControl("lblOrderID");    //find control since it is a template field
    _OrderIds.Add(myOrderIDLablel.Text);
  }

我希望这能让你朝着正确的方向前进。

于 2013-07-02T15:13:16.473 回答