Сравните значения в GridView и установите цветную ячейку в зависимости от условия - PullRequest
0 голосов
/ 28 марта 2019

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**

Редактировать # 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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...