Проблема с ASP.NET 2.0 GridView скрытые столбцы отображаются при обратной передаче - PullRequest
0 голосов
/ 15 января 2010

Пожалуйста, помогите, У меня есть пользовательский элемент управления, который содержит GridView, где я скрываю его столбцы на событие GridView RowCreated:

    private void gvGrid_RowCreated(object sender, GridViewRowEventArgs e)
    {

                foreach (TableCell objCell in e.Row.Cells)
                {
                   if (objCell is DataControlFieldHeaderCell)
                    {
                            objCell.Visible = false;
                    }
                }

    }

Теперь все работает нормально, но на обратной передаче страницы ASPX (содержащей Griview UserControl) отображаются все скрытые столбцы, где мой PageLoad выглядит следующим образом

         protected void Page_Load(object sender, EventArgs e)
         {
               if (!IsPostBack)
               {
               ucGridView.PopulatePage();
               }
          }

Примечание: ASPX-страница начинает работать нормально, если я удаляю! Проверка IsPostBack..но я не хочу этого ... В чем проблема ...!

Ответы [ 4 ]

2 голосов
/ 15 января 2010

Вам нужно использовать обработчик событий RowDataBound вместо RowCreated.

1 голос
/ 15 марта 2012

По умолчанию ваш столбец отображается в сетке, и вы прячетесь, когда страница не отправляется обратно

 if (!IsPostBack)
  {
        ucGridView.PopulatePage();
  }

так

technically ucGridView.PopulatePage(); is only beign called once thats why when you remove 
!IsPostBack is works fine.
1 голос
/ 13 февраля 2010

Вы уверены, что должны сделать столбцы невидимыми в коде позади?

Если вам просто нужно сохранить значения полей в сетке, но не отображать их, тогда Microsoft рекомендует использовать свойство DataKeyNames элемента управления GridView.

Вместо использования выделенного кода для скрытия определенных столбцов вы можете просто удалить связанные поля из GridView и указать их в свойстве DataKeyNames:

<asp:GridView ID="GridView1" runat="server" 
        DataKeyNames="SalesOrderID,SalesOrderDetailID"
        DataSourceID="LinqDataSource1">

Таким образом, поля не будут показываться пользователю, но GridView знает, как сохранить значения для обновления и т. Д.

0 голосов
/ 17 января 2010

если используется в RowDataBound, то вы не можете получить доступ к значению столбца griview

...