Действительно ли возможно получить доступ к элементу на странице Master от страницы, загруженной в ContentPlaceHolder
для ведущего устройства?
У меня есть ListView, который перечисляет имена людей в области навигации на странице Master. Я хотел бы обновить ListView после того, как человек был добавлен к таблице, с которой ListView является данными, связанными. ListView
в настоящее время не обновляет, это - значения, пока кэш не перезагружается. Мы нашли это просто повторным выполнением ListView.DataBind()
обновит содержание listview. Мы не смогли работать ListView.DataBind()
на странице, которая использует страницу Master.
Ниже образец того, что я хотел сделать, но ошибка компилятора говорит
"PeopleListView не существует в текущем контексте"
GIS.master - Где ListView находится
...<asp:ListView ID="PeopleListView"...
GISInput_People.aspx - GIS.master использования, поскольку это - основная страница
GISInput_People.aspx.cs
AddNewPerson()
{
// Add person to table
....
// Update Person List
PeopleListView.DataBind();
...
}
Каков был бы лучший способ решить вопрос как это в .NET C#?
Я полагаю, что Вы могли сделать это при помощи этого. Ведущее устройство. FindControl или что-то подобное, но Вы, вероятно, не были должны - это требовать, чтобы страница содержания знала слишком много о структуре основной страницы.
Я предложил бы другой метод, такой как увольнение события в предметной области, к которой ведущее устройство могло прислушаться и снова переплести при увольнении.
Каждый думает для запоминания, следующая директива ASP.NET.
<%@ MasterType attribute="value" [attribute="value"...] %>
Это поможет Вам при ссылке на это. Ведущее устройство путем создания ссылки со строгим контролем типов на основную страницу. Можно тогда сослаться ListView, не будучи должен БРОСИТЬ.
Брать на себя управление называют "PeopleListView" на основной странице
ListView peopleListView = (ListView)this.Master.FindControl("PeopleListView");
peopleListView.DataSource = [whatever];
peopleListView.DataBind();
Но @palmsey более корректен, особенно если Ваша страница могла бы иметь возможность больше чем одной основной страницы. Отделите их и используйте событие.
Принятие Вашей основной страницы назвали MyMaster:
(Master as MyMaster).PeopleListView.DataBind();
Править: так как PeopleListView будет объявлен защищенный по умолчанию, необходимо будет или изменить это на общественность или создать обертку общественной собственности так, чтобы можно было получить доступ к нему от страницы.