GridView на странице разметки в aspnet заполняется из SQL-запроса ниже.
В строке номер 2 , у меня есть предельное значение, которое не должно быть превышено, в данном случае это значение 225.
В строке номер 1 , у меня есть значение, зарегистрированное в базе данных, в данном случае это значение 6534.
Теперь мне нужно сравнить эти значения, и если значение номер строки 1 больше значения номер строки 2 , мне нужно установить цвет фона метки в GridView должно быть красным.
Я думал решить с RowDataBound , но безуспешно, потому что у меня ошибка:
Индекс был вне диапазона. Должен быть неотрицательным и меньше размера
имя параметра коллекции: индекс
Пожалуйста, помогите мне.
Мой код ниже.
Запрос Sql
mysql> SELECT
H2
FROM
(
SELECT
H2
FROM
`listValue`
UNION ALL
SELECT
H2_PPM
FROM
`listfiles`
WHERE
ID = 17819
) tbl
GROUP BY
H2
HAVING
count(*) = 1;
+------+
| H2 |
+------+
| 225 |
| 6534 |
+------+
2 rows in set
OnRowDataBound
protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
int ValH2 = Convert.ToInt32(gv.Rows[0].Cells[0].Text);
//tried also int ValH2 = Convert.ToInt32(gv.Rows[1].Cells[1].Text);
}
}
Метка GridView
<asp:TemplateField HeaderText="H2" ItemStyle-CssClass="ddl_Class_new" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:Label ID="lbH2" runat="server" Text='<%# String.Format("{0:N0}", Eval("H2"))%>' ></asp:Label>
</ItemTemplate>
</asp:TemplateField>
Редактировать # 02
![**Edit #02**](https://i.stack.imgur.com/8YPC7.png)
Редактировать # 01
Line 275: if (e.Row.RowType == DataControlRowType.DataRow)
Line 276: {
Line 277: int ValH2 = Convert.ToInt32(gv.Rows[0].Cells[0].Text);
Line 278: }
Line 279: }
Index was out of range. Must be non-negative and less than the size of the collection parameter name:index Line: 277
[ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection parameter name:index]
System.Collections.ArrayList.get_Item(Int32 index) +14540872
System.Web.UI.WebControls.GridViewRowCollection.get_Item(Int32 index) +19
Default.gv_RowDataBound(Object sender, GridViewRowEventArgs e) in c:\inetpub\wwwroot\aspnet\Default.aspx.cs:277
System.Web.UI.WebControls.GridView.OnRowDataBound(GridViewRowEventArgs e) +137
System.Web.UI.WebControls.GridView.CreateRow(Int32 rowIndex, Int32 dataSourceIndex, DataControlRowType rowType,
DataControlRowState rowState, Boolean dataBind, Object dataItem, DataControlField[] fields, TableRowCollection rows,
PagedDataSource pagedDataSource) +262
System.Web.UI.WebControls.GridView.CreateChildControls(IEnumerable dataSource, Boolean dataBinding) +5059
System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data) +97
System.Web.UI.WebControls.GridView.PerformDataBinding(IEnumerable data) +18
System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data) +165
Default.BindData() in c:\inetpub\wwwroot\aspnet\Default.aspx.cs:86
Default.btnInc_Click(Object sender, ImageClickEventArgs e) in c:\inetpub\wwwroot\aspnet\Default.aspx.cs:197
System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e) +141
System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument) +186
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5028