GridView.PageSize установлен по умолчанию 10 при загрузке 1-й страницы - PullRequest
0 голосов
/ 21 октября 2009

Я использую C #, .NET 3.5. У меня есть элемент управления GridView с динамически связанным DataSource, и я динамически устанавливаю PageSize в обработчике событий Page_Load. Я установил AllowPaging = true на элементе управления. Пейджинг GridView работает нормально, однако размер страницы, заданный в Page_Load, не вступает в силу при первой загрузке страницы. При первой загрузке страницы она всегда будет отображать 10 строк независимо от установленного мной свойства GridView.PageSize (5, 15 и т. Д.). После 1-го раза (постбэк) размер страницы вступает в силу, и все работает как положено.

Размер страницы - это свойство главной страницы, которое я получаю из файла web.Config в appsettings.

Я не уверен, почему размер страницы gridView не вступает в силу с 1-го раза. Должен ли я устанавливать размер страницы в другом событии, кроме 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 ]

2 голосов
/ 21 октября 2009

Событие PageLoad вашей дочерней страницы вызывается перед событием PageLoad вашей главной страницы. Поэтому, если вы устанавливаете Master.GridViewSize в событии PageLoad главной страницы, оно не устанавливается до второго PostBack.

Было бы лучше загрузить GridViewSize в начале жизненного цикла страницы, а затем сохранить его в сеансе.

0 голосов
/ 22 октября 2009

Отсутствовал метод PageBind после установки размера страницы. Добавление этого и все работает нормально. Я связывал элемент управления перед настройкой PageSize и думаю, что это значение сохранялось после 1-го раза и впоследствии использовалось в Postback, но не в первый раз.

Спасибо Джейсону Беркану за то, что указал на это.

0 голосов
/ 21 октября 2009

В вашем определении подкачки для GridView задано первое связывание данных, но не второе, если происходит обратная передача. (По умолчанию подкачка отсутствует) Вам нужно настроить подкачку для GridView на странице aspx.

Попробуй вот так

<asp:GridView ID="GridView1" PageSize='<%$ AppSettings:memberDataGridPageSize %>' ..>

Также знайте, что если вы работаете с проектом ASP.NET 3.5, вы можете использовать DataPager элемент управления с расширением GridView, есть пример, который Мэтт Берсет разработал здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...