Другие ответы здесь ОЧЕНЬ правильны, если указать на проблему с вашим UpdateCommand
.
Как я уже упоминал в комментарии ранее, я просто укажу, что это немного проще, чем то, что выесть там.При использовании GridView
с 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>
(ColPK
будет первичным ключом обновляемой таблицы)
Затем вы можете установить "AutoGenerateEditButton" в значение true в разметке GridView.и, пуф!Вы можете обновить 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
в своем коде, если вам требуется дополнительная обработка, илиотмените Update
, основываясь на некоторой логике и т. д. Но основные функции обновления в значительной степени бесплатны!