簡體   English   中英

命名容器中的findControl(Asp.net Webform C#)

[英]findControl in Naming container (Asp.net webform C#)

我在命名容器中遇到有關findControl方法的問題。 這不是第一個麻煩,我想了解一下理論。 我在網站上找到了許多解決方案,但沒有任何效果

我有一個包含控件的DetailsView。 我將DefaultMode“插入”,然后添加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”,因為它找不到我的控件。

為什么無法識別我的控件? 以及如何處理呢?

提前致謝

您正在頁面級別上使用FindControl 但是控件位於DetailsView內部,因此您需要首先訪問它。

TextBox tb = DetailsView1.FindControl("TXB_New") as TextBox;

//or

var RadioButtonSelect = (RadioButton)DetailsView1.FindControl("RB_Select");

再次感謝您,我找到了解決方案。

我不知道,但是Panel元素就像一個容器。 我只是添加一個findControl:

var RadioButtonSelect = (RadioButton)DetailsView1.FindControl("Panel1").FindControl("RB_Select");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM