2011-12-16 3 views
0

Я использую VS2005 ASP.NET C# и SQL Server 2005.Получить GridView Row Count с Условием

У меня есть GridView на моей странице и пару наклеек.

Я могу выделить значение числа строк в метку следующий:

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

Однако, я хотел бы выделить еще одно значение другого ярлык, который подсчитывает количество строк, когда в значение внутри столбца Роль равна «admin».

Как я могу это сделать? Примеры и образец кода будут оценены.


EDIT:

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

Вы можете запустить sqlCommand.ExecuteScalar() с определенным заявлением, как:

select Count(UserRole) where UserRole = 'Admin' 

возвращает значение, то вы можете использовать его в качестве текста метки;

1

Ну .. Я полагаю, и использовать ADO.Net

Перед GridView1.DataBind(), сделать for петлю к Gridview или DataTable, которые вы собираетесь связываться с 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 это

+1

Это намного проще и понятнее, если вы используете конструкцию foreach в своем цикле. Например, 'foreach (DataRow oRow в datatable1.Rows)'. Тогда вам не нужно беспокоиться о синтаксисе '[i]'. –

+1

Да, 'foreach' лучше, если цель цикла только для подсчета. Но в будущем возможно, что ему нужно будет проверить, является ли это первой строкой или последней строкой или определенной строкой таблицы. Когда это произойдет, я не нашел способ добиться этого в 'foreach'. Поэтому мне нужно снова использовать цикл' for'. Может ли кто-нибудь сказать мне, чтобы достичь этого в 'foreach'? – william

+0

Если нам нужно это сделать, мы просто добавляем переменную счетчика за пределы цикла, которая увеличивается в конце каждого прохода через цикл. –