Ես ունեմ GridView և պետք է կարողանամ ծրագրային կերպով փոխել TextBox-ի արժեքը խմբագրման ձևանմուշում: Երբ ես փորձում եմ մուտք գործել այն onRowDataBound-ի ընթացքում, ես ստանում եմ սա.
Բացառության մանրամասներ. System.NullReferenceException. Օբյեկտի հղումը սահմանված չէ օբյեկտի օրինակով:
Կարծում եմ, որ onRowDataBound մեթոդի ներսում խմբագրման ձևանմուշների վերահսկիչները հասանելի չեն: Երբ ես փորձում եմ խմբագրել TextBox-ի արժեքը onRowEditing մեթոդով, այնուամենայնիվ, GridViewEditEventArgs օբյեկտի համար .Row տարբերակ չկա, այնպես որ թվում է, որ դուք չեք կարող մուտք գործել խմբագրման ձևանմուշի կառավարներ onRowEditing մեթոդով նույնպես:
Կա՞ գաղափար, թե ինչպես ծրագրային կերպով փոխել TextBox-ի արժեքը GridView-ի խմբագրման ձևանմուշում:
ASP.NET WebForms, .NET 4.0, C#
====
Խմբագրել # 1. Սա այն է, ինչ ես ներկայումս ունեմ: txtMiles օբյեկտը RowEditing-ում դառնում է զրոյական:
<asp:TemplateField HeaderText="Miles Frequency">
<ItemTemplate>
<asp:Label ID="lblFreqMiles" runat="server" Text='<%# Eval("FrequencyMiles") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate >
<asp:TextBox ID="txtFreqMiles" runat="server" Text='<%# Eval("FrequencyMiles")%>' Width="50px"></asp:TextBox>
<asp:RequiredFieldValidator runat="server" ID="req1" ControlToValidate="txtFreqMiles" ErrorMessage="*" />
<asp:CompareValidator ID="CompareValidator1" runat="server" Operator="DataTypeCheck" Type="Integer" ControlToValidate="txtFreqMiles" ErrorMessage="Value must be a whole number." />
</EditItemTemplate>
</asp:TemplateField>
protected void gvMaint_RowEditing(object sender, GridViewEditEventArgs e)
{
//format Miles Frequency column
GridViewRow row = grvMaint.Rows[e.NewEditIndex];
TextBox txtMiles = (TextBox)row.FindControl("txtFreqMiles");
if (txtMiles.Text == "999999")
{
//do stuff
}
grvMaint.EditIndex = e.NewEditIndex;
populateMaintGrid();
}