GridView – отображать заголовки на пустом источнике данных
В C #, как я все еще показываю заголовки gridview, даже с источником данных пуст.
Я не создаю автоматически столбцы, поскольку они все предопределены.
В настоящее время я делаю следующее.
- * .h или * .hpp для определения classов
- C ++ #include охранники
- Инструмент для отслеживания зависимостей #include
- Заголовок диапазона HTTP
- Пространство имен cstdio stdio.h
Верните DataTable из хранимой процедуры, затем установите DataSource в gridview, а затем вызовите DataBind ().
Это отлично работает, когда у меня есть данные, но когда никакие строки не возвращаются, я просто получаю пустое место, где должна быть grid.
Изменить: Спасибо всем за свойство .NET 4+. Я спросил об этом в .NET 3.5 днях. Теперь это намного проще. 🙂
- Каковы преимущества относительного пути, например «../include/header.h» для заголовка?
- Как я могу сделать липкие заголовки в RecyclerView? (Без внешней библиотеки)
- Заголовки, включающие друг друга в C ++
- Заголовок в исходном файле
- Заглавийте первую букву обоих слов в строке из двух слов
- Где Visual Studio ищет файлы заголовков C ++?
- Объявление переменной в файле заголовка
- C ++ Заголовок заголовка
В ASP.Net 4.0 добавлено свойство boolean ShowHeaderWhenEmpty
.
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.showheaderwhenempty.aspx
Примечание. Заголовки не будут отображаться, если не вызывается DataBind () с чем-то отличным от нуля.
GridView1.DataSource = New List(Of String) GridView1.DataBind()
После публикации этого я придумал способ, который работает. Однако я не считаю, что это лучший способ справиться с этим. Любые предложения по лучшему?
//Check to see if we get rows back, if we do just bind. if (dtFunding.Rows.Count != 0) { grdFunding.DataSource = dtFunding; grdFunding.DataBind(); } else { //Other wise add a emtpy "New Row" to the datatable and then hide it after binding. dtFunding.Rows.Add(dtFunding.NewRow()); grdFunding.DataSource = dtFunding; grdFunding.DataBind(); grdFunding.Rows[0].Visible = false; }
Я просто работал над этой проблемой, и ни одно из этих решений не сработало бы для меня. Я не мог использовать свойство EmptyDataTemplate
потому что я динамически создавал свой GridView
с настраиваемыми полями, которые предоставляют фильтры в заголовках. Я не мог использовать пример almny, потому что я использую ObjectDataSource
s вместо DataSet
или DataTable
. Тем не менее, я нашел этот ответ опубликованным в другом вопросе StackOverflow, который ссылается на это элегантное решение, которое я смог выполнить для своей конкретной ситуации. Это включает переопределение метода CreateChildControls
GridView
для создания той же строки заголовка, которая была бы создана, если бы были реальные данные. Я думал, что стоит разместить здесь, где это, вероятно, будет найдено другими людьми в аналогичном исправлении.
Если вы работаете с ASP.NET 3.5 и ниже, и ваша проблема относительно проста, как моя, вы можете просто вернуть нулевую строку из SQL-запроса.
if not exists (select RepId, startdate,enddate from RepTable where RepID= 10) select null RepID,null StartDate,null EndDate else select RepId, startdate,enddate from RepTable where RepID= 10
Это решение не требует кода C # или кода ASP.NET
- Убедитесь, что вы выбрали нулевые столбцы в соответствующие имена, иначе это не сработает.
- Должен быть включен дополнительный блок, который является тем же запросом, что и в
if not exists (query part)
- В моем случае, если я использую @RepID вместо 10. Что отображается в окне DropDownList вне gridview.
Каждый раз, когда я изменяю раскрывающийся список, чтобы выбрать другой rep, Gridview обновляется. Если запись не найдена, она показывает нулевую строку.
set "
showheaderwhenEmpty
Property
Свойство HeaderTemplate можно использовать для автоматической настройки головы или использования ListView, если вы используете .NET 3.5.
Лично я предпочитаю ListView над GridView и DetailsView, если это возможно, это дает вам больше контроля над вашим html.
Добавьте это свойство в grid-view: ShowHeaderWhenEmpty = “True”, это может помочь просто проверить
Я нашел очень простое решение проблемы. Я просто создал два GridView. Первый GridView назвал DataSource запросом, который был создан для возврата строк. Он просто содержал следующее:
Затем я создал div со следующими характеристиками, и я поместил GridView внутри него с помощью ShowHeader = “false”, чтобы верхняя строка была того же размера, что и все остальные строки.
Это основной пример Gridview с EmptyDataText и ShowHeaderWhenEmpty
Juste добавить свойство ShowHeaderWhenEmpty и установить его в true
Это решение работает для меня
Вы можете установить для свойства ShowHeadersWhenNoRecords свойства ownertableview значение true. ASPX:
Также, когда источник данных для GridView имеет значение null (когда нет записей), вы можете попробовать установить его, как показано ниже: c #:
if (GridView1.DataSource == null) { GridView1.DataSource = new string[] { }; } GridView1.DataBind();
Я использовал asp sqlDataSource. Это сработало для меня, когда я установил CancelSelectOnNullParameter как false:
Вы можете использовать EmptyDataText
как показано ниже:
Он не показывает заголовки, он отображает ваше сообщение «Нет записей». вместо.
No Record Available in CS Page gvEmployee.DataSource = dt; gvEmployee.DataBind();
No Record Available in CS Page gvEmployee.DataSource = dt; gvEmployee.DataBind(); Help.. see that link: http://www.c-sharpcorner.com/UploadFile/d0e913/how-to-display-the-empty-gridview-in-case-of-no-records-in-d/
Используйте EmptyDataTemplate, как показано ниже. Когда ваш DataSource не имеет записей, вы увидите свою сетку с заголовками и буквальный текст или HTML, который находится внутри тегов EmptyDataTemplate.
No Results Found ...