Я задал этот вопрос относительно странного поведения элемента управления GridView в ASP.Net (я использую C #).
Для каждой строки в моем GridView есть ссылки «Редактировать» и «Удалить». Например, в редактировании есть это javascript:__doPostBack('gvwServers','Edit$0')
- поэтому, очевидно, сервер выяснит, что кто-то щелкнул для редактирования строки 0
из gvwServers
.
Достаточно справедливо. Если я нажимаю ссылку «Изменить», я получаю постбэк, и GridView перерисовывается с кнопкой «Изменить», замененной кнопками «Обновить» и «Отмена». Стандартное поведение. СЕЙЧАС - кнопка «Отмена» имеет эту ссылку javascript:__doPostBack('gvwServers','Cancel$0')
- именно то, что я ожидал. Отмена строки 0
из gvwServers
. НО кнопка обновления имеет javascript:__doPostBack('gvwServers$ctl02$ctl00','')
. Это, кажется, не имеет никакого смысла. И это, по-видимому, и является причиной того, что моя процедура обработки обновления не запускается.
Почему ASP не выводит правильные аргументы обратной передачи?
Мой код доступен по ссылке выше.
<asp:GridView ID="gvwServers" runat="server" class="gvwServers"
AutoGenerateColumns="false" OnRowEditing="gvwServers_Edit"
onrowcancelingedit="gvwServers_Cancelling" onrowdeleting="gvwServers_Deleting"
onrowupdated="gvwServers_Updated" onrowupdating="gvwServers_Updating"
AutoGenerateEditButton=true AutoGenerateDeleteButton=true>
<columns>
<asp:CommandField ShowEditButton="true" />
<asp:CommandField ShowDeleteButton="true" />
<asp:BoundField DataField="intServerID" visible="false" />
<asp:TemplateField HeaderText = "Server Name">
<ItemTemplate>
<asp:Label ID="lblServerName" runat="server" Text='<%# Bind("txtName") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtServerName_Edit" runat="server" Text='<%# Bind("txtName") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText = "Key">
<ItemTemplate>
<asp:Label ID="lblAppKey" runat="server" Text='<%# Bind("txtApplicationKey") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtAppKey_Edit" runat="server" Text='<%# Bind("txtApplicationKey") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText = "Connection String">
<ItemTemplate>
<asp:Label ID="lblConnString" runat="server" Text='************'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtConnString_Edit" Width="300px" Height="100px" Text='<%# Bind("txtConnectionString")%>' TextMode="MultiLine" ></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
</columns>
</asp:GridView>