Ошибка в ID TemplateField, вы используете Label
в EditItemTemplate
для отображения идентификатора, и эта метка не отправляет обратно тот идентификатор , который необходим для обновления sql. asp:label
не отображает поле ввода, которое необходимо здесь.
Либо удалите TemplateField и просто используйте в качестве остальных полей asp:BoundField
, который автоматически создает поля ввода при обновлении каждой строки, либо задайте read only text box
(на EditImteTemplate
), чтобы можно было опубликовать идентификатор.
Это строки, которые вам нужно сфокусировать и изменить:
<asp:TemplateField HeaderText="id" InsertVisible="False" SortExpression="id">
<EditItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("id") %>'></asp:Label>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("id") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>