У меня есть список объектов, заполненных из базы данных. Мне нужно отобразить сообщение об ошибке, если список пуст и в противном случае отобразить вид сетки.Проверьте, нет ли списка в C#
Как проверить, нет ли в C# List<T>
?
У меня есть список объектов, заполненных из базы данных. Мне нужно отобразить сообщение об ошибке, если список пуст и в противном случае отобразить вид сетки.Проверьте, нет ли списка в C#
Как проверить, нет ли в C# List<T>
?
Почему бы не ...
bool isEmpty = !list.Any();
if(isEmpty)
{
// error message
}
else
{
// show grid
}
GridView
имеет также EmptyDataTemplate
, который показан, если источник данных пуст. Это подход в ASP.NET:
<emptydatarowstyle backcolor="LightBlue" forecolor="Red"/>
<emptydatatemplate>
<asp:image id="NoDataErrorImg"
imageurl="~/images/NoDataError.jpg" runat="server"/>
No Data Found!
</emptydatatemplate>
Примечание: второй подход предполагает использование ASP.NET. –
Не было бы лучше проверить, сначала ли «список == null»? –
Как насчет использования метода Count().
if(listOfObjects.Count() != 0)
{
ShowGrid();
HideError();
}
else
{
HideGrid();
ShowError();
}
Count - свойство, а не метод –
@MoslemBenDhaou Зависит от того, открыт ли метод расширения Linq или он вызван или является родным для объекта. –
@GrantThomas Я воспринял это как список
Если реализация список, который вы используете IEnumerable<T>
и Linq вариант, вы можете использовать Any
:
if (!list.Any()) {
}
В противном случае вы обычно имеют Length
или Count
собственности на массивы и типы коллекций соответственно ,
Как быстрая заметка: list.Any имеет гораздо лучшую производительность, чем счет. –
gridview сам имеет метод, который проверяет, является ли источник данных, с которым вы привязываете его, пуст, он позволяет отображать что-то еще.
Если вы используете GridView затем использовать пустой шаблон данных: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.emptydatatemplate.aspx
<asp:gridview id="CustomersGridView"
datasourceid="CustomersSqlDataSource"
autogeneratecolumns="true"
runat="server">
<emptydatarowstyle backcolor="LightBlue"
forecolor="Red"/>
<emptydatatemplate>
<asp:image id="NoDataImage"
imageurl="~/images/Image.jpg"
alternatetext="No Image"
runat="server"/>
No Data Found.
</emptydatatemplate>
</asp:gridview>
Это очень специфичный ASP.NET. –
Я не ребята winforms, но не gridview asp.net. Это форматы данных в формах? –
If (list.Count==0){
//you can show your error messages here
} else {
//here comes your datagridview databind
}
Вы можете сделать свой DataGrid видимым ложным и сделать его видимым на участке еще.
Кажется, что это будет тратить много времени на подсчет всех членов. – NetMage
Вы должны использовать простой IF
заявление
List<String> data = GetData();
if (data.Count == 0)
throw new Exception("Data Empty!");
PopulateGrid();
ShowGrid();
var dataSource = lst!=null && lst.Any() ? lst : null;
// bind dataSource to gird source
Так что случилось с использованием 'если (list.Count == 0) {/ * ... * /}'? –
Или 'if (! List.Any())' – Tharwen
Спасибо, что сработал! – lakshganga