gpt4 book ai didi

c# - 在 GridView 编辑模板中更改控件的值

转载 作者:行者123 更新时间:2023-11-30 15:30:50 25 4
gpt4 key购买 nike

我有一个 GridView,我需要能够以编程方式更改编辑模板中 TextBox 的值。当我尝试在 onRowDataBound 期间访问它时,我得到了这个:

异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。

我认为在 onRowDataBound 方法内部,编辑模板控件不可访问。但是,当我尝试在 onRowEditing 方法中编辑 TextBox 的值时,GridViewEditEventArgs 对象没有 .Row 选项,因此您似乎也无法在 onRowEditing 方法中访问编辑模板中的控件。

关于如何在 GridView 的编辑模板中以编程方式更改 TextBox 的值有什么想法吗?

ASP.NET 网络表单、.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();
}

最佳答案

在尝试获取控件之前,请确保该行处于编辑模式:

protected void gvMaint_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if(e.Row.RowState == DataControlRowState.Edit)
{
TextBox txtFreqMiles = (TextBox)e.Row.FindControl("txtFreqMiles");

// At this point, you can change the value as normal
txtFreqMiles.Text = "some new text";
}
}

关于c# - 在 GridView 编辑模板中更改控件的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21580370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com