Come funziona Trovercontrol in GridView?
-
14-09-2020 - |
Domanda
Sto cercando di aggiornare un database utilizzando GridView Modifica, aggiorna il campo di comando.Ho due campi modificabili che vengono visualizzati come caselle di testo quando è in modalità Modifica.Quando si fa clic su Invia, sto cercando di mettere i valori della casella di testo in variabili con cui lavorare, ma non riesco ad accedervi.I due nomi di colonne sono "EOR" e "CategoriaName".Ho trovato diversi suggerimenti su altri forum per provare qualcosa come:
protected void ResultGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
TextBox txtEor = (TextBox)myGridName.Rows[e.RowIndex].FindControl("EOR");
.
Quando debug del programma, TXTEOR è sempre nullo.L'unica cosa che posso pensare è che non mi riferisco correttamente alla cella.Ho impostato l'headertExt, AccessibleHeadertetext, Datafield e Sorticepression a "EOR", ma è ancora appena arrivato NULL.
Qualsiasi aiuto sarebbe molto apprezzato!
ASP per la GridView:
<asp:GridView ID="grdEOR" runat="server" BackColor="White"
BorderColor="#999999" OnPageIndexChanging="grdEor_PageIndexChanging"
BorderStyle="Solid" BorderWidth="1px" CellPadding="3" ForeColor="Black" GridLines="Vertical"
AllowPaging="True"
PageSize="15" AutoGenerateColumns="False" onrowediting="grdEOR_RowEditing"
onrowcancelingedit="grdEOR_RowCancelingEdit"
onrowupdating="grdEOR_RowUpdating" onrowdeleting="grdEOR_RowDeleting"
ShowFooter="True">
<PagerSettings Mode="NumericFirstLast" />
<Columns>
<asp:BoundField DataField="EORCategoryID" HeaderText="EORCategoryID"
SortExpression="EORCategoryID" ReadOnly="True">
</asp:BoundField>
<asp:BoundField DataField="EOR" HeaderText="EOR" SortExpression="EOR"
AccessibleHeaderText="EOR"/>
<asp:BoundField DataField="CategoryName" HeaderText="CategoryName"
SortExpression="CategoryName" />
<asp:CommandField ButtonType="Button" ShowDeleteButton="True"
ShowEditButton="True" />
</Columns>
<FooterStyle BackColor="#CCCCCC" />
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="#CCCCCC" BorderColor="Black"
BorderStyle="Solid" BorderWidth="5px" />
</asp:GridView>
. Soluzione
Alla fine ho trovato un modo che funziona:
string newEor = ((TextBox)grdEOR.Rows[e.RowIndex].Cells[1].Controls[0]).Text;
string newCategoryName = ((TextBox)grdEOR.Rows[e.RowIndex].Cells[2].Controls[0]).Text;
.