2010-01-15 3 views
0

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

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 Check..but я не хочу! это ... В чем проблема ...!

ответ

2

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

0

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

1

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

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

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

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

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

1

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

обратной передачи
if (!IsPostBack) 
    { 
     ucGridView.PopulatePage(); 
    } 
technically ucGridView.PopulatePage(); is only beign called once thats why when you remove 
!IsPostBack is works fine.