C# GridView行更新SqlDataSource.Update from CodeBehind
因此,在OnRowUpdate事件期间,我在Gridview中执行更新时遇到了问题 我试图做的是在SqlDataSource中设置UpdateCommand,然后使用该命令进行更新。事件正在正常触发,但当事件完成时,行似乎从未更新 C:C# GridView行更新SqlDataSource.Update from CodeBehind,c#,asp.net,sql,code-behind,sqldatasource,C#,Asp.net,Sql,Code Behind,Sqldatasource,因此,在OnRowUpdate事件期间,我在Gridview中执行更新时遇到了问题 我试图做的是在SqlDataSource中设置UpdateCommand,然后使用该命令进行更新。事件正在正常触发,但当事件完成时,行似乎从未更新 C: 编辑:重新编写了我的示例更新命令…它实际上是一个更新命令,而不是选择命令哈哈。您的更新命令应该是一个更新命令,而不是选择命令 将该行更改为与此更接近的内容: SqlDataSource1.UpdateCommand = "UPDATE A_Table SET S
编辑:重新编写了我的示例更新命令…它实际上是一个更新命令,而不是选择命令哈哈。您的更新命令应该是一个更新命令,而不是选择命令 将该行更改为与此更接近的内容:
SqlDataSource1.UpdateCommand = "UPDATE A_Table SET Something = @Something WHERE ID = " + e.RowIndex;
有关如何使用UpdateCommand的更多信息,请参阅此msdn链接:
UpdateCommand应该是一个UPDATE命令,而不是SELECT命令 将该行更改为与此更接近的内容:
SqlDataSource1.UpdateCommand = "UPDATE A_Table SET Something = @Something WHERE ID = " + e.RowIndex;
有关如何使用UpdateCommand的更多信息,请参阅此msdn链接:
首先,UpdateCommand不应该像UPDATE A_Table SET ID=。。哪里
我想你错过了什么。阅读这是一篇很适合你的文章
编辑:如Kiley所说:尝试SqlDataSource1.UpdateCommand=updatea_Table SET Something=@somethine,其中ID=+e.RowIndex 首先,UpdateCommand不应该像UPDATE A_Table SET ID=。。哪里
我想你错过了什么。阅读这是一篇很适合你的文章
编辑:如Kiley所说:尝试SqlDataSource1.UpdateCommand=updatea_Table SET Something=@somethine,其中ID=+e.RowIndex 这里的其他答案非常正确地指出了UpdateCommand的问题 正如我在前面的评论中提到的,我只想指出,这比你在那里看到的要容易一些。在将GridView与SQLDataSource一起使用时,只要设置正确,就可以完成许多工作 首先,在SQLDataSource的标记中定义UpdateCommand,如下所示:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="Your Connection String Here"
ProviderName="System.Data.SqlClient"
SelectCommand="SELECT ColPK, ColA, ColB, ColC FROM Table_Name"
UpdateCommand="UPDATE Table_Name
SET ColA=@ColA, ColB=@ColB, ColC=@ColC,
WHERE ColPK=@ColPK">
</asp:SqlDataSource>
现在,如果需要进行额外的处理,或者基于某些逻辑取消更新等,您仍然可以在代码中处理onrowUpdatement事件。但是基本的更新功能几乎是免费的 这里的其他答案非常正确地指出了UpdateCommand的问题 正如我在前面的评论中提到的,我只想指出,这比你在那里看到的要容易一些。在将GridView与SQLDataSource一起使用时,只要设置正确,就可以完成许多工作 首先,在SQLDataSource的标记中定义UpdateCommand,如下所示:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="Your Connection String Here"
ProviderName="System.Data.SqlClient"
SelectCommand="SELECT ColPK, ColA, ColB, ColC FROM Table_Name"
UpdateCommand="UPDATE Table_Name
SET ColA=@ColA, ColB=@ColB, ColC=@ColC,
WHERE ColPK=@ColPK">
</asp:SqlDataSource>
现在,如果需要进行额外的处理,或者基于某些逻辑取消更新等,您仍然可以在代码中处理onrowUpdatement事件。但是基本的更新功能几乎是免费的 如果为GridView设置了DataKeyName,并且在SQLDataSource1标记中定义了UpdateCommand,则不必在RowUpdate事件中执行任何操作。在此处调用Update方法将导致更新发生两次。@jadarnel27是正确的;如果确实设置了DataKeyNames,则从RowUpdate处理程序调用Update将导致StackOverflowXeption!如果为GridView设置了DataKeyName,并且在SQLDataSource1标记中定义了UpdateCommand,则不必在RowUpdate事件中执行任何操作。在此处调用Update方法将导致更新发生两次。@jadarnel27是正确的;如果确实设置了DataKeyNames,则从RowUpdate处理程序调用Update将导致StackOverflowXeption!哎呀,这个例子实际上并不正确。我没有发布脚本,因为它包含一些敏感的信息,我只是写了一个考虑不周的例子。update命令实际上并不是问题所在,实际上让它执行是个问题。Opps,这个例子实际上并不正确。我没有发布脚本,因为它包含一些敏感的信息,我只是写了一个考虑不周的例子。update命令实际上并不是问题所在,让它执行才是问题所在。
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
AutoGenerateEditButton="True" DataKeyNames="ColPK"
DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="ColPK" HeaderText="Column PK"
SortExpression="ColA" ReadOnly="True" />
<asp:BoundField DataField="ColA" HeaderText="Column A"
SortExpression="ColA" />
<asp:BoundField DataField="ColB" HeaderText="Column B"
SortExpression="ColB" />
<asp:BoundField DataField="ColC" HeaderText="Column C"
SortExpression="ColC" />
</Columns>
</asp:GridView>