[英]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.