2016-06-21 1 views
2

Ich bin Neuling in ASP.NET und C#. Ich möchte Hintergrundfarbe zu allen Zellenwerten von Gridview hinzufügen, die mit dem oberen Buchstaben beginnen. Hier ist meine Quellcode:Hintergrundfarbe zu allen Zellenwerten von Gridview hinzufügen, die mit Großbuchstaben beginnt

protected void OnRowDataBound(object sender, GridViewRowEventArgs e) 
{ 
      if (e.Row.RowType == DataControlRowType.DataRow) 
      { 
       TableCell cell = e.Row.Cells[2]; 
       string entity = cell.Text.ToString(); 
       if (entity[0] >= 'A' && entity[0] <= 'Z') 
       { 
        cell.BackColor = Color.Yellow; 
       } 
      } 
} 

Aber ich habe diesen Fehler:

Index was outside the bounds of the array. 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.IndexOutOfRangeException: Index was outside the bounds of the array. 

Source Error: 


Line 85:     TableCell cell = e.Row.Cells[1]; 
Line 86:     string entity = cell.Text.ToString(); 
Line 87:     if (entity[0] >= 'A' && entity[0] <= 'Z') 
Line 88:     { 
Line 89:     cell.BackColor = Color.Yellow; 

Source File: c:\Users\Eric\Default.aspx.cs Line: 87 

Bitte helfen Sie mir, diesen Fehler zu lösen

Danke an alle

+0

'char' hat eine' IsUpper' Methode. Sie könnten 'char.IsUpper (entity [0])' verwenden, stellen Sie einfach sicher, dass 'entity' nicht null ist und mindestens 1 Zeichen enthält. –

Antwort

1

Das Problem dabei ist, Linie:

if (entity[0]... 

Wenn der Wert der Zelle null oder leer ist, hat die Entität keine Elemente. Dadurch erhalten Sie die Ausnahme außerhalb des Bereichs.

Sie können dies umgehen, indem Sie zunächst prüfen, ob Elemente im Array vorhanden sind.

if (!string.IsNullOrEmpty(entity) && entity[0] >= 'A' && entity[0] <= 'Z') 
{ 
    //your code here 
} 

diese Weise ist es nur für die Großbuchstaben überprüft, ob ein Brief

tatsächlich existiert
+0

Sie brauchen hier keine Klammern: (entity [0]> = 'A' && entity [0] <= 'Z') –

+0

Ihr Code wird nicht zu Zellen hinzugefügt, der mit einem Großbuchstaben beginnt! – mynhylisti

+1

@AlexOvechkin du hast absolut recht. Behoben –

0

cell.Text.ToString() kehrt leer Zeichenfolge wie folgt: „“. Das Problem besteht darin, dass Sie in dieser Zelle keinen Wert haben. Wenn Sie also versuchen, auf die erste Position in der Zeichenfolge zuzugreifen, wird diese Ausnahme ausgelöst. In Zeile 87 ist die Ausnahmebedingungsnachricht ziemlich klar.

Die Lösung ist in der Tat auf Null oder leer zu überprüfen.

Verwandte Themen