所以我在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();
}
编辑:重新编写我的示例更新命令...它实际上是一个更新命令,而不是一个选择命令哈哈。
答案 0 :(得分:2)
您的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
答案 1 :(得分:2)
首先,UpdateCommand
不应该像UPDATE A_Table SET ID = .. WHERE ...
?
我觉得你错过了什么。阅读Insert Update Edit Delete record in GridView。这是一篇很棒的文章。
编辑:像Kim说的那样:试试SqlDataSource1.UpdateCommand = "UPDATE A_Table SET Something = @Something WHERE ID = " + e.RowIndex;
答案 2 :(得分:2)
此处的其他答案在指出UpdateCommand
的问题时非常正确。
正如我在前面的评论中所提到的,我只是指出这比你在那里更容易。使用带有GridView
的{{1}}时,只要您设置正确,就可以完成很多工作。
首先,在SQLDataSource
的标记中定义UpdateCommand
,如下所示:
SQLDataSource
(<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>
将是您正在更新的表的主键)
然后,您可以在GridView标记中将“AutoGenerateEditButton”设置为true,噗!您可以更新ColPK
(无需在后面的代码中执行任何操作)。
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>
,您仍然可以处理代码中的OnRowUpdating
事件。但基本的更新功能非常多免费!