J'ai une liste d'objets remplis à partir d'une base de données. Dans le cas contraire, je dois afficher un message d'erreur si la liste est vide et afficher une vue en grille.
Comment vérifier si un List<T>
est vide en C #?
Pourquoi pas...
bool isEmpty = !list.Any();
if(isEmpty)
{
// error message
}
else
{
// show grid
}
GridView
a aussi un EmptyDataTemplate
qui est affiché si la source de données est vide. C'est une approche dans ASP.NET:
<emptydatarowstyle backcolor="LightBlue" forecolor="Red"/>
<emptydatatemplate>
<asp:image id="NoDataErrorImg"
imageurl="~/images/NoDataError.jpg" runat="server"/>
No Data Found!
</emptydatatemplate>
Si la liste que vous utilisez est IEnumerable<T>
et que Linq est une option, vous pouvez utiliser Any
:
if (!list.Any()) {
}
Sinon, vous avez généralement une propriété Length
ou Count
sur les tableaux et les types de collection, respectivement.
If (list.Count==0){
//you can show your error messages here
} else {
//here comes your datagridview databind
}
Vous pouvez rendre votre grille de données visible false et la rendre visible dans la section else.
Qu'en est-il de l'utilisation de la méthode Count ().
if(listOfObjects.Count() != 0)
{
ShowGrid();
HideError();
}
else
{
HideGrid();
ShowError();
}
Vous devriez utiliser une simple instruction 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 lui-même a une méthode qui vérifie si la source de données à laquelle vous le liez est vide, elle vous permet d'afficher autre chose.
Si vous utilisez un gridview, utilisez le modèle de données vide: 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>