Im zapełnianie GridView z listy, więc jestem zmuszonyużywać elementów sterujących TemplateField w celu umożliwienia edycji. Wymaga to wyświetlenia TextBox wypełnionego oryginalną wartością w trybie edycji i użyciu FindControl, aby uzyskać nową wartość przy przesyłaniu aktualizacji.
Problem został znalezionyTextBox.Text == "OriginalTextBoxValue"
<asp:TemplateField HeaderText="A Field">
<ItemTemplate>
<asp:Label ID="_theLabel" runat="server" Text="<%# Eval("AField") %>" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="_theTextBox" runat="server" Text="<%# Eval("AField") %>" />
</EditItemTemplate>
</asp:TemplateField>
I kod w mojej procedurze obsługi zdarzeń aktualizacji
TextBox newText = (TextBox)_myGridView.Rows[e.RowIndex].FindControl("_thTextBox");
//newText.Text == the old value of the text box
Odpowiedzi:
4 dla odpowiedzi № 1Czy Twój gridview jest bindowany przy każdym odświeżeniu? Może to wyjaśnić, dlaczego nigdy nie otrzymasz zaktualizowanej wartości, ponieważ widok siatki zostanie ponownie powiązany przed odczytaniem pola tekstowego.
Czy możesz wkleić pełną metodę aktualizacji?
0 dla odpowiedzi nr 2
Dostałeś kod w niewłaściwej procedurze obsługi zdarzeń. Przenieś go do obsługi zdarzenia Edycja, aby wypełnić pole tekstowe, gdy użytkownik kliknie polecenie Edytuj dla wiersza.