#c# #asp.net #master-pages
#c# #asp.net #мастер-страницы
Вопрос:
Я использую следующий код на своей главной странице для поиска элементов управления внутри страниц содержимого. При первой загрузке страницы это работает нормально; но когда я выбираю элемент из выпадающего списка, который находится на странице содержимого, и его автоотправка включена, я получаю сообщение об ошибке «ссылка на объект не установлена для экземпляра объекта». Это означает, что функция FindControl() не смогла найти элементы управления внутри страниц содержимого. В чем причина этой проблемы?
PlaceHolder pHolder = (PlaceHolder)ContentPlaceHolder2.FindControl("PlaceHolder1");
Label lblPage = (Label)pHolder.FindControl("lblPageName");
if (lblPage.Text == "DesignSerachSQGrid")
{
}
Редактировать…
Html-код для выпадающего списка:
<telerik:RadComboBox ID="ddlSearchL1" runat="server" Width="400px" Skin="Office2007"
onselectedindexchanged="ddlSearchL1_SelectedIndexChanged"
AutoPostBack="True" Font-Names="Eras Medium ITC" Font-Size="X-Small"
onprerender="ddlSearchL1_PreRender">
<Items>
<telerik:RadComboBoxItem runat="server" Text="Please Select ................"
Value="Please Select ................" Font-Name="Eras Medium ITC" />
<telerik:RadComboBoxItem runat="server" Text="Design Documents"
Value="Design Documents" Font-Name="Eras Medium ITC" />
<telerik:RadComboBoxItem runat="server" Text="Vendor Documents"
Value="Vendor Documents" Font-Name="Eras Medium ITC" />
<telerik:RadComboBoxItem runat="server" Text="Business Documents"
Value="Business Documents" Font-Name="Eras Medium ITC" />
<telerik:RadComboBoxItem runat="server" Text="Management Documents"
Value="Management Documents" Font-Name="Eras Medium ITC" />
<telerik:RadComboBoxItem runat="server" Text="Squad Check - Management"
Value="Squad Check - Management" Font-Name="Eras Medium ITC" />
<telerik:RadComboBoxItem runat="server" Text="Transmittal - Management"
Value="Transmittal - Management" Font-Name="Eras Medium ITC" />
<telerik:RadComboBoxItem runat="server" Text="Transmittal - Design"
Value="Transmittal - Design" Font-Name="Eras Medium ITC" />
<telerik:RadComboBoxItem runat="server" Text="Squad Check - Design"
Value="Squad Check - Design" Font-Name="Eras Medium ITC" />
<telerik:RadComboBoxItem runat="server" Text="Transmittal - Vendor"
Value="Transmittal - Vendor" Font-Name="Eras Medium ITC" />
<telerik:RadComboBoxItem runat="server" Text="Squad Check - Vendor"
Value="Squad Check - Vendor" Font-Name="Eras Medium ITC" />
</Items>
</telerik:RadComboBox>
Комментарии:
1. Можете ли вы добавить немного HTML для MasterPage?
2. это длинная главная страница. не знаю, какой раздел html может быть полезен
Ответ №1:
Вы можете проверить это сообщение: ASP.NET 2.0 Мастер-страницы и FindControl()
/// <summary>
/// Finds a Control recursively. Note finds the first match and exists
/// </summary>
/// <param name="ContainerCtl"></param>
/// <param name="IdToFind"></param>
/// <returns></returns>
public static Control FindControlRecursive(Control Root, string Id)
{
if (Root.ID == Id)
return Root;
foreach (Control Ctl in Root.Controls)
{
Control FoundCtl = FindControlRecursive(Ctl, Id);
if (FoundCtl != null)
return FoundCtl;
}
return null;
}
используйте его
this.dgItemList = FindControlRecursive(this.Master, "dgItemList") as DataGrid;