У меня есть следующая сетка:
<asp:GridView DataSourceID="accountsDataSource" DataKeyNames="Id" ShowEditButton="true" ...>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Hyperlink ID="lnkGridEditEntry" runat="server" Text='<%# Bind("Name")%>' NavigateUrl="..." />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtGridAccountName" runat="server" Text='<%# Bind("Name") %>' />
</EditItemTemplate>
</asp:TemplateField>
</asp:GridView>
<asp:SqlDataSource ID="accountsDataSource" SelectCommand= "..." DeleteCommand= "..." UpdateCommand="update Account set [Name]=@Name where [Id]=@Id">
<UpdateParameters>
<asp:Parameter Name="Name" />
<asp:Parameter Name="Id" />
</UpdateParameters>
</asp:SqlDataSource>
Когда я нажимаю кнопку «Изменить» и пытаюсь обновить Имя, указанный выше код никогда не обновляет Имя
Когда я изменяю параметр обновления имени на
<asp:ControlParameter ControlID="txtGridAccountName" Name="Name" PropertyName="Text" Type="String" />
страница вылетает с сообщением «невозможно найти элемент управления txtGridAccountName в ControlParameter Name». Я считаю, что это потому, что текстовое поле в поле шаблона получает другой идентификатор (что-то вроде ct100 $ txtGridAccountName $ ..), когда сетка отображается, и, очевидно, она не найдена.
имя получателя в первую очередь отображается как поле шаблона, потому что я отображаю его как ссылку на страницу с подробностями / транзакциями.
если я удалю поле шаблона и покажу имя, как это работает.
приветствуется любая помощь в решении этой проблемы.