【发布时间】:2017-11-30 07:45:24
【问题描述】:
我对命名容器中的 findControl 方法有疑问。 这不是第一个麻烦,我想了解这个理论。 我在网站上找到了很多解决方案,但没有任何效果
我有一个包含控件的 DetailsView。 我把 DefaultMode "Insert" 添加了 2 个单选按钮
<asp:DetailsView ID="DetailsView1" runat="server"
ItemType="[...]"
DefaultMode="Insert"
[...]">
<Fields>
<asp:TemplateField>
<InsertItemTemplate>
<asp:Panel ID="Panel1" runat="server" GroupingText="Create or Select">
<div class="Select">
<asp:RadioButton ID="RB_Select" runat="server" Text="Select" Checked="True" AutoPostBack="true" OnCheckedChanged ="RB_Select_CheckedChanged" />
<asp:DropDownList runat="server" ID="DDL_Select"
ItemType="[...]"
[...]
AutoPostBack="true">
</asp:DropDownList>
</div>
<div class="New">
<asp:RadioButton ID="RB_New" runat="server" Text="New" Checked="false" AutoPostBack="true" OnCheckedChanged="RB_New_CheckedChanged" />
<asp:TextBox ID="TXB_New" runat="server" Enabled="false" Text="<%# BindItem.Label %>"></asp:TextBox>
</div>
</asp:Panel>
</InsertItemTemplate>
</asp:TemplateField>
</Fields>
</asp:DetailsView>
例如,在我的后面代码中,我只想测试单选按钮是否被选中:
protected void RB_New_CheckedChanged(object sender, EventArgs e)
{
var RadioButtonNew = (RadioButton)FindControl("RB_New");
var RadioButtonSelect = (RadioButton)FindControl("RB_Select");
RadioButtonSelect.Checked = !RadioButtonNew.Checked;
}
我有一个“System.NullReferenceException”,因为它找不到我的控件。
为什么它不能识别我的控件?又该如何处理呢?
提前致谢
【问题讨论】:
-
我认为你应该在 DetailView 的 'OnDataBinding' 事件中找到你的 RatioButton 控件。
-
谢谢,我试了一下,还是有同样的异常。我在 loadFunction、updateItem、getItem、insertItem、OnPreInit 中进行了测试...我认为/我知道这是与我们在页面中调用控件的时刻有关的问题。但我不知道如何补救。
标签: c# asp.net webforms findcontrol naming-containers