2011-12-16 34 views
0

计数我使用VS2005 ASP.NET C#和SQL Server 2005获取的GridView行与条件

我有我的网页中的GridView和一对夫妇的标签。

我能够通过以下对行数的值分配到一个标签:

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

不过,我想另一个值分配给另一个标签,其对行时的数列内的值角色等于“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'

回答

1

你可以用像select语句运行sqlCommand.ExecuteScalar():

select Count(UserRole) where UserRole = 'Admin' 

返回的值,那么你可以为你的标签文字使用;

1

嗯.. 我假定u使用ADO.Net

之前GridView1.DataBind(),做一个for环路的GridView或者你要绑定到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(); 

附:数据表datatable1.Rows[i]["adminColumn"]datatable1.Rows["adminColumn"][i] ..我不能肯定..谷歌它

+1

如果在循环中使用foreach构造,它会更容易,更容易理解。例如`foreach(DataRow oRow in datatable1.Rows)`。那么你不必担心`[i]`语法。 – 2011-12-16 02:09:50