2011-05-20 50 views
3

我想在屏幕上显示一个消息,如果搜索的数据源不返回任何记录,只是不知道语法,盘点记录 - C#

if(gridview.datasource.[number of records] = 0) 
{ 
do a thing 
} 

或评估LINQ查询背后的数据源,

有什么想法吗?

谢谢

回答

7

您可以使用gridview的Rows集合。

if(gridview.Rows.Count == 0) 
{ 
do a thing 
} 
+0

不,只有DataControlRowType.DataRow行包含在Rows集合中:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rows(v=vs.80 ).aspx – Larry 2011-05-20 13:09:57

+0

如果启用了分页,行将只为您提供* current *页的行。 – 2011-05-20 13:16:16

+0

工作得很好,谢谢,你能做类似的DataList我想知道吗? – DarkW1nter 2011-05-20 13:18:03

3

您需要将您的数据源强制转换为与其绑定的正确类型。只使用行并不总是会给你数据源中的总数。请看下面的例子:

<asp:GridView ID="GridView1" runat="server" 
    AllowPaging="true" PageSize="3"> 
</asp:GridView> 

而且在后面的代码:

var fruit = new List<string>() 
    { "banana", "orange", "apple", "strawberry", "melon", "grape" } 

GridView1.DataSource = fruit; 
GridView1.DataBind(); 

int rowsCount = GridView1.Rows.Count; // rowsCount = 3 

int dataCount = ((List<string>)GridView1.DataSource).Count; // dataCount = 6 

所以你可以看到,只是计算的行只返回“3”,因为启用分页。这是当前行的页数。但是,转换数据源会为您提供原始数据源返回的计数。所以只要你明白不同之处,你就可以使用。

+0

感谢你的这一点,对未来有用,不需要在项目中进行分页,但是这将派上用场 – DarkW1nter 2011-05-20 13:28:56