Я использую C #, .NET 3.5. У меня есть элемент управления GridView с динамически привязанным источником данных, и я динамически устанавливаю размер страницы в обработчике событий Page_Load. Я установил AllowPaging = true для элемента управления. Пейджинг GridView работает нормально, однако размер страницы, установленный в Page_Load, не вступает в силу при первой загрузке страницы. При первой загрузке страницы на ней всегда будет отображаться 10 строк независимо от установленного мной свойства GridView.PageSize (5, 15 и т. Д.). После первого раза (возврат страницы) размер страницы вступает в силу, и все работает должным образом.
Размер страницы - это свойство главной страницы, которое я получаю из файла web.Config в настройках приложения.
Я не уверен, почему размер страницы gridView не вступает в силу в первый раз. Должен ли я устанавливать размер страницы в другом событии, кроме Page_Load. Кроме того, я устанавливаю его всегда, даже если это обратная передача. Я запускаю страницу с помощью внутреннего веб-сервера. Есть идеи, что происходит?
Код позади (GridView1.AllowPaging = true на странице aspx):
protected void Page_Load(object sender, System.EventArgs e)
{
DataView dvMembers = GetMembers;
GridView1.DataSource = dvMembers;
GridView1.PageSize = Master.GridViewSize;
}
Свойство главной страницы:
public int GridViewSize
{
get { return Convert.ToInt32
(ConfigurationManager.AppSettings ["memberDataGridPageSize"]); }
}
3 ответа
Событие PageLoad вашей дочерней страницы вызывается перед событием PageLoad вашей главной страницы. Следовательно, если вы устанавливаете Master.GridViewSize
в событии PageLoad главной страницы, оно не устанавливается до второго PostBack.
Было бы лучше загрузить GridViewSize на ранней стадии жизненного цикла страницы, а затем сохранить его в сеансе.
В вашем определении разбивки на страницы для GridView установлено первое связывание данных, но не второе, если происходит обратная передача. (По умолчанию разбиение на страницы отсутствует) Вам необходимо установить разбиение на страницы для GridView на странице aspx.
Попробуйте вот так
<asp:GridView ID="GridView1" PageSize='<%$ AppSettings:memberDataGridPageSize %>' ..>
Также знайте, что если вы запускаете проект ASP.NET 3.5, вы можете использовать элемент управления DataPager
с расширением GridView, есть пример, который разработал Мэтт Берсет здесь.
Отсутствовал метод PageBind после установки Pagesize. Добавление этого, и все работает нормально. Я привязывал элемент управления перед установкой размера страницы, и я предполагаю, что это значение сохранялось после первого раза и впоследствии использовалось при обратной передаче, но не в первый раз.
Спасибо Джейсону Беркану за указание на это.
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.