データベースから生成されたオブジェクトのリストがあります。リストが空の場合はエラーメッセージを表示し、それ以外の場合はグリッドビューを表示する必要があります。
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>
使用しているリストの実装がIEnumerable<T>
で、Linqがオプションの場合は、Any
を使用できます。
if (!list.Any()) {
}
それ以外の場合、通常は配列とコレクション型にそれぞれLength
またはCount
プロパティがあります。
If (list.Count==0){
//you can show your error messages here
} else {
//here comes your datagridview databind
}
あなたのdatagridをfalseに見えるようにし、elseセクションで見えるようにすることができます。
Count()メソッドを使用してどうですか。
if(listOfObjects.Count() != 0)
{
ShowGrid();
HideError();
}
else
{
HideGrid();
ShowError();
}
単純な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
gridview自体には、バインド先のデータソースが空かどうかをチェックするメソッドがあります。それを使用すると、他のものを表示できます。
Gridviewを使用している場合は、空のデータテンプレートを使用します。 http://msdn.Microsoft.com/ja-jp/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>