GridView RowUpdating SqlDataSource.Update from CodeBehind
本文关键字:from CodeBehind Update SqlDataSource RowUpdating GridView | 更新日期: 2023-09-27 18:10:42
所以我在OnRowUpdating事件期间在Gridview中进行更新时遇到了问题。
我要做的是在SqlDataSource中设置UpdateCommand,然后使用该命令更新。事件正在触发,但是当事件完成后,该行似乎永远不会更新。
c#:protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
SqlDataSource1.UpdateCommand = "UPDATE A_Table SET Something = @AValue WHERE ID = " + e.RowIndex;
SqlDataSource1.Update();
}
编辑:重写了我的示例update命令…这实际上是一个更新命令,而不是一个选择命令哈哈。
这里的其他答案在指出您的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>
(ColPK
将是你正在更新的表的主键)
然后,你可以在GridView标记中将AutoGenerateEditButton设置为true,然后,噗!您可以更新GridView
(无需在后面的代码中做任何事情)。
<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>
现在,如果您需要做额外的处理,或者基于某些逻辑取消Update
,您仍然可以在代码中处理OnRowUpdating
事件,等等。但是基本的更新功能几乎是免费的!
您的UpdateCommand应该是UPDATE
命令,而不是SELECT
命令。
SqlDataSource1.UpdateCommand = "SELECT Something FROM A_Table WHERE ID = " + e.RowIndex;
把这行改成更接近这个的值:
SqlDataSource1.UpdateCommand = "UPDATE A_Table SET Something = @Something WHERE ID = " + e.RowIndex;
有关如何使用UpdateCommand的更多信息,请参阅msdn链接:
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.sqldatasource.updatecommand.aspx首先,UpdateCommand
不应该像UPDATE A_Table SET ID = .. WHERE ...
?
我想你错过了什么。读取插入更新编辑删除GridView中的记录。这篇文章很适合你。
编辑:喜欢Kiley说:试试SqlDataSource1.UpdateCommand = "UPDATE A_Table SET Something = @Something WHERE ID = " + e.RowIndex;