Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 即使有数据,Gridview也返回空。我想使用gridview中的数据更新另一个数据库_C#_Gridview - Fatal编程技术网

C# 即使有数据,Gridview也返回空。我想使用gridview中的数据更新另一个数据库

C# 即使有数据,Gridview也返回空。我想使用gridview中的数据更新另一个数据库,c#,gridview,C#,Gridview,我有一个用户捕获数据的Web表单。此数据会影响Gridview中的其他数据。我想修改一个DetailsView类型控件,如果文本框和下拉列表中的数据发生了更改,则需要更新主数据,该控件将使更新按钮可见 我在表单上有一个gridview,当用户单击update时,我想使用gridview上的主键OrderId更新数据库中的所有行 如果我把代码放在每个文本框和下拉框中,然后调用一个名为DoUpdate的例程,那么这就行了。但是它有点慢,因为每次更改都会强制更新,所以我认为最好是显示一个更新按钮,然后

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

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

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

从按钮例程调用例程时,尽管gridview没有行。我假设我需要查找控件(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);
  }
List_OrderIds=newlist();
foreach(gvOrderLines.Rows中的GridViewRow gvr)
{
Label myOrderIDlabel=(Label)gvr.FindControl(“lblOrderID”);//查找控件,因为它是一个模板字段
_Add(myorderidablel.Text);
}
gridview在ASP页面中定义

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

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

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);
  }
List_OrderIds=newlist();
DataTable table=gvOrderLines.DataSource作为DataTable;
foreach(表.Rows中的GridViewRow gvr)
{
Label myOrderIDlabel=(Label)gvr.FindControl(“lblOrderID”);//查找控件,因为它是一个模板字段
_Add(myorderidablel.Text);
}

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

使用GridViewCommandEventArgs并拥有命令名和操作…有关更多信息,请参阅。人们对网格视图感到困惑,因为它们是用来显示数据的,您希望下划线数据源获取数据,我希望这会有所帮助。您好!关于答案,我在DataTable gvOrderlines上找到了nyull仍然为空。这不起作用了你是怎么得到你的gridview的?你能显示你从哪里得到正在使用的活动gridview的代码吗?RE:GridViewCommandEventArgs我如何从按钮控件访问它?按钮被按下,因此我得到标准事件参数。数据源如下:我想我已经发现了问题。一个tbx是数据源的select参数。这也是我想更新的数据的一部分。因此gridview数据源不正确。我将不得不使它成为一个不同的参数