Попытка обновить мою БД из функции редактирования/обновления GridView. Что бы я ни старался, я не могу работать.Невозможно обновить источник данных из обновления gridview
Как я могу обновить свой SQLDatasource, используя информацию, введенную в текстовое поле редактирования GridView?
Вот что у меня есть:
.cs:
DS.UpdateCommand = "UPDATE tbSystems SET Systems = @Systems WHERE id = @id";
DS.Update();
.aspx:
<asp:GridView ID="gv1"
runat="server"
CellPadding="2"
DataKeyNames="id"
AutoGenerateDeleteButton="True"
AutoGenerateEditButton="True"
OnRowDeleting="gv1_RowDeleting"
OnRowDeleted="gv1_RowDeleted"
OnRowUpdating="gv1_RowUpdating" OnRowEditing="gv1_RowEditing" OnRowUpdated="gv1_RowUpdated">
</asp:GridView>
<asp:SqlDataSource ID="DS" runat="server" ConnectionString="<%$ ConnectionStrings:conn %>">
<UpdateParameters>
<asp:Parameter Name="Systems" Type="String" />
</UpdateParameters>
</asp:SqlDataSource>
Я получаю эту ошибку:
Must declare the scalar variable "@id".
- Sho uldn't идентификационная переменная объявляется уже, так как у меня есть , объявленный в DataKeyNames GridView, или мне нужно создать параметр обновления в SQLDataSource?
Как получить новое значение в текстовом поле GridView? Эта строка кода всегда дает старое значение независимо от того, в каком событии (событие редактирования, событие обновления или обновленное событие) я помещаю его в:
Response.Write (((TextBox) gv1.Rows [e.NewEditIndex] .Cells [2] .Controls [0]) Текст).
Как мне управлять @variables?
Ваша помощь очень признательна.
Это работает, как вы объяснили. Благодарю. Я закончу это последним вопросом: это работает с соединением gridview и SQLDataSource. На моей странице есть кнопки доступа к различным таблицам БД. В этом случае вы бы создали x количество SQLdatasources и изменили gridview datasourceID, когда это было необходимо, или вы поедете с другим вариантом? – Rimo72
@ Rimo72: Я был бы склонен иметь отдельный 'SqlDataSource' и' GridView' для каждой таблицы и использовать что-то вроде ['MultiView' control] (https://msdn.microsoft.com/en-us/ library/system.web.ui.webcontrols.multiview (v = vs.110) .aspx), чтобы показывать только текущую сетку. –
Это будет работать для меня. Большое спасибо за вашу помощь. – Rimo72