获取带条件的GridView行计数

时间:2011-12-16 01:47:19

标签: c# asp.net sql visual-studio gridview

我正在使用VS2005 ASP.NET C#和SQL Server 2005。

我的网页上有一个GridView和几个标签。

我能够通过以下方式将行数的值分配到标签中:

UserFound.Text = GridView1.Rows.Count.ToString();

但是,我想将另一个值分配给另一个标签,该标签计算列 Role 中的值等于“admin”时的行数。

我该怎么办?示例和示例代码将不胜感激。


修改

int admincount=0;
foreach (DataRow oRow in GridView1.Rows)
{
    if (GridView1.Rows["User Role"].ToString().Trim().Contains("Admin"))
    {
        admincount++;
    }
}

AdminFound.Text = admincount.ToString();

我收到错误:

The best overloaded method match for System.Web.UI.WebContols.GridViewCollection.this[int] has some invalid arguments

Argument '1': canot convert from 'string' to 'int'

2 个答案:

答案 0 :(得分:1)

嗯.. 我假设您使用ADO.Net

GridView1.DataBind()之前,对Gridview执行for循环或将要绑定到Gridview1的数据表

int admRows=0;
for(int i=0;i<datatable1.Rows.Count;i++)
{
  if(datatable1.Rows[i]["adminColumn"].ToString().Trim().ToLower().Contains("admin"))
  {
    admRows++;
  }
}
admFound.Text=admRows.ToString();
GridView1.DataSource=datatable1;
GridView1.DataBind();

P.S。 datatable1.Rows[i]["adminColumn"]datatable1.Rows["adminColumn"][i] ..我不确定.. google it

答案 1 :(得分:1)

您可以使用select语句运行sqlCommand.ExecuteScalar(),如:

select Count(UserRole) where UserRole = 'Admin'  

您返回的值可用作标签文字;