2015-02-24 2 views
2

Мне интересно, можно ли проверить BackColor GridViewRow во время события GridView_OnRowEditing.GridView Edit - Check Row Color

Мой текущий код только возвращает [Name = 0, ARGB = (0, 0, 0, 0)], когда я пытаюсь получить row.BackColor

Вот мой код:

protected void GridView_OnRowEditing(object sender, GridViewEditEventArgs e) 
    { 
     var row = GridView1.SelectedRowStyle; 
     if (row.BackColor == Color.White) 
     { 
      errorLabel.Text = "ERROR - cannot edit this row"; 
     } 
     else 
     { 
      //Different code 
     } 
    } 

Заранее спасибо.

Редактировать: Есть ли альтернатива DataGridViewRow.Tag с asp GridViewRow?

+0

Почему вы хотите проверить цвет строки? И если вы проверите свойство 'TAG' вместо этого? В свойстве TAG вы можете поместить любой объект, как 'Boolean', и проверить их перед редактированием. –

+0

@RichardDias Я сейчас выделяю строки, которые были «отсканированы», поэтому, если строка зеленая или красная, тогда ее можно редактировать. Если строка белая, то ее нельзя коснуться до тех пор, пока она не будет отсканирована. – terbubbs

ответ

2

я смог найти свое собственное решение, делая это:

if (GridView1.Rows[e.NewEditIndex].BackColor != Color.SeaGreen && 
       GridView1.Rows[e.NewEditIndex].BackColor != Color.IndianRed) 
     { 
      e.Cancel = true; 
      errorLabel.Text = "Please scan roll before updating QtyRun"; 
     } 
     else 
     { 
      //do something else 
     } 

@RichardDias идея бы я был в порядке, но жерех GridViewRowнеразрешить для свойства тега (DataGridViewRowдействительно позволяет для свойства Tag).

Еще одна причина, по которой я не использовал его метод, заключается в том, что у меня уже есть время, чтобы выделить определенные строки (что нужно сделать, альтернативы) в моем gridview. Чтобы добавить другой метод «подтверждения», кажется неэффективным.

Используя мой метод, я смог использовать свой первоначальный метод «подтверждение по ряду цветов», чтобы отменить событие редактирования. Независимо от того, спасибо @RichardDias за вашу помощь.

1

Попробуйте сделать что-то вроде этого:

public void ScanRows() 
{ 
    foreach (DataGridViewRow row in GridView1.Rows) 
    { 
     row.DefaultCellStyle.BackColor = Color.Green; 
     //Indicate that this row already was scanned 
     row.Tag = true; 
    } 
} 

protected void GridView_OnRowEditing(object sender, GridViewEditEventArgs e) 
{ 
    var row = GridView1.SelectedRow; 
    if (!((bool)(row.Tag ?? false))) 
    { 
     errorLabel.Text = "ERROR - cannot edit this row"; 
    } 
    else 
    { 
     //Different code 
    } 
} 
+0

ahh Я вижу. Я собираюсь попробовать это завтра. Я буду отмечать вас сразу, как только я заработаю. Спасибо. – terbubbs

+0

эй, просто чтобы вы знали, asp GridView не имеет тега, обладает свойством. DataGridView делает, но я использую asp GridView. – terbubbs