2015-06-12 3 views
1

У меня есть GridView внутри панели, которую я хочу скрыть, когда ребенок пуст, потому что на данный момент остается fieldset с текстом legend и ничего внутри.Скрыть панель, когда GridView пуст

Я уже пытался поставить что-то наподобие Panel.Visible = GridView.Rows.Count > 0 в Page_Load, но это не работает.

Как я могу получить результат, который мне нужен?

Спасибо

Некоторые подробности:

Если при первой загрузке таблицы базы данных пуст, я не вижу fieldset, когда я добавить строку панели с GridView не появляется; если при первой загрузке у меня есть строка, я вижу панель с GridView, когда я удаляю уникальную строку, что ничего не исчезает, но никогда не возвращается, даже если я вставляю новую строку. Я думаю, что Page_Load не является правильным событием.

+0

Можете ли вы поделиться своим вопросом Page_Load() со своим вопросом? –

ответ

1

В конце концов я нашел мою проблему ... я поставил FormView для вставки и GridView в различных UpdatePanels, так унифицированная все в том же UpdatePanel и использовать этот код:

Panel.Visible = GridView.Rows.Count > 0; 

в событии GridView DataBound, и это сработало.

Спасибо всем.

+0

Благодарим вас за то, что вы не использовали логический ответ, чтобы определить жестко закодированное значение true/false, как это делали некоторые другие ответы. – 182764125216

0

Если вы просто хотите, чтобы ваша панель видимыми/невидимыми на основе GridView строк, то его так же просто, как это:

if(GridView.Rows.Count > 0) 
    PanelId.Visible = true; 
else 
    PanelId.Visible = false; 

Но убедитесь, что вы делаете этот код после того, как вы назвали функцию связывания Gridview ,

Надеюсь, это поможет.

+0

Это именно то, что он уже написал, просто более подробно. – Paedow

+0

Здравствуйте, GridView привязан объектом ObjectDataSource без какого-либо кода, и поэтому я не знаю, как я могу поместить после привязки.Спасибо –

+0

После удаления или добавления строки вам нужно будет снова проверить состояние. 'Page_Load' будет работать. Просто проверьте свое состояние на postback и переустановите GridView, чтобы обновить статус строки. –

2

попробовать это ..

Panel.Visible = (GridView.Rows.Count > 0?false:true);

+0

Поместите двоеточие ':' вместо полуколонии ';'. –

+0

Пожалуйста, проверьте Редактированный ответ .. !! – Dhaval

+0

Здравствуйте, я уже пробовал этот код, и я получаю Всегда тот же результат: если при первом загрузке таблица базы данных пуста, я не вижу 'fieldset', когда добавляю строку, Panel с GridView не делает появляется; если при первой загрузке у меня есть строка, я вижу панель с GridView, когда я удаляю уникальную строку, что ничего не исчезает, но никогда не возвращается, даже если я вставляю новую строку. Я думаю, что Page_Load не является правильным событием. –

1

Пожалуйста, попробуйте следующие шаги:

  1. Проверить Panel.Visible = GridView.Rows.Count > 0 в конце мероприятия страницы, такие как Page_PreRender
  2. Добавить OnRowDeleted событие в GridView и проверьте для Panel.Visible = GridView.Rows.Count > 0, если удаление строки является последней строкой. Также переустановите GridView как GridView.DataBind()
  3. Добавить событие OnRowCreated в GridView и повторить тот же процесс, что и в случае удаления строки.

Код:

protected void Page_PreRender(object sender, EventArgs e) 
{ 
    Panel.Visible = GridView.Rows.Count > 0; 
} 

protected void GridView_RowCreated(object sender, GridViewRowEventArgs e) 
{ 
    GridView.DataBind(); 
    Panel.Visible = GridView.Rows.Count > 0; 

} 
protected void GridView_RowDeleted(object sender, GridViewDeletedEventArgs e) 
{ 
    GridView.DataBind(); 
    Panel.Visible = GridView.Rows.Count > 0; 
} 

Я надеюсь, что это решит проблему.

Смежные вопросы