簡體   English   中英

在用戶控件表單上查找字段

[英]Finding a field on user control form

我在用戶控件窗體上有一個字段“ x”,該字段包含在aspx頁和使用SharePoint主頁的該頁中。 我正在嘗試在我的代碼中的aspx頁面上找到字段x,但會引發“未設置對象引用”錯誤。 我已嘗試追蹤,但沒有任何效果,

((TextBox)Page.Master.FindControl("PlaceHolderMain").FindControl("Experience").FindControl("x")).Text


((TextBox)this.FindControl("x")).Text


((TextBox)Page.Master.FindControl("PlaceHolderMain").FindControl("x")).Text

我可以在頁面源中找到該字段,

<input name="ctl00$PlaceHolderMain$ctl00$x" type="text" value="3" id="ctl00_PlaceHolderMain_ctl00_x" class="textbox" />

更新:-

以前,我是通過編程方式在aspx頁面的load事件上添加用戶控件的,

UserControl uc = (UserControl)Page.LoadControl("Experience.ascx");
experineceForm.Controls.Add(uc);

但是通過查看頁面源代碼,我感到懷疑並認為應該在設計時使用以下代碼將其添加,

<%@ Register TagPrefix="uc" TagName="Experience" Src="Experience.ascx" %>

<div id="experineceForm" runat="server">
   <uc:experience id="idExperienceForm" runat="server"/>
</div>

完成此操作后,我可以使用以下代碼找到控件,

((TextBox)Page.Master.FindControl("PlaceHolderMain").FindControl("idExperienceForm").FindControl("txtEmployeeComments")).Text

AFAIK, ((TextBox)Page.Master.FindControl("x")).Text應該可以工作

嘗試使用此功能(如下)對ID進行遞歸搜索。 最有可能是System.NullReferenceException:未將對象引用設置為對象實例的錯誤是因為腳本未找到文本框,因此控件沒有.Text屬性。 注意:根將是asp.net占位符對象或asp.net面板等的ID,其中包含要查找的文本框。 在嘗試使用控件之前,應該測試空返回值。

public Control FindControlRecursive(Control root, string id)
{
    if (root.ID == id) {
        return root;
    }
    Control c = default(Control);
    foreach ( c in root.Controls) {
        Control t = FindControlRecursive(c, id);
        if ((t != null)) {
            return t;
        }
    }
    return null;
}

暫無
暫無

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

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