KyLim0211 Ответов: 2

Разделить строку косой чертой '/'


protected void OnRowDataBound123(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        TableCell statusCell1 = e.Row.Cells[1];
        if (statusCell1.Text != "-")
        {
            string[] a = statusCell1.Text.Split('/');
            if (a[0] != a[1])
            {
                statusCell1.ForeColor = System.Drawing.Color.Red;
            }
        }
    }
}


я использую эту функцию в gridview onrowdatabound, если данные до и после / не совпадают, то текст красного цвета.
мои примерные данные :
5/6
11/11
-
1/3


но продолжаю получать ошибки :
System.IndexOutOfRangeException: Index was outside the bounds of the array.


Что я уже пробовал:

protected void OnRowDataBound123(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        TableCell statusCell1 = e.Row.Cells[1];
        if (statusCell1.Text != "-")
        {
            string[] a = statusCell1.Text.Split('/');
            if (a[0] != a[1])
            {
                statusCell1.ForeColor = System.Drawing.Color.Red;
            }
        }
    }
}

2 Ответов

Рейтинг:
2

Suvendu Shekhar Giri

Это может быть связано с тем, что у вас есть одна или несколько записей, которые не находятся в нужном формате.
Просто добавить проверку для вас идти вперед, чтобы сравнить.
Что-то вроде-

if(a.Length>1)
{
   if (a[0] != a[1])
   {
      statusCell1.ForeColor = System.Drawing.Color.Red;
   }
}


Вы также можете следить за значениями во время отладки, чтобы увидеть, какие значения вы получаете.

Надеюсь, это поможет :)


Рейтинг:
0

Animesh Datta

Привет ,
Просто проверьте длину массива, возвращаемого в вашем операторе if .

 string[] a = statusCell1.Text.Split('/');
if(a.Length > 1)
{
//do other stuff
}

исключение возникает при возврате массива размером меньше индекса, к которому вы обращаетесь.
Здесь вы обращаетесь к элементу массива 1, тогда в массиве должно быть по крайней мере 2 элемента, так как индекс массива начинается с 0 .
Спасибо