2017-05-17 22 views
0

IamがonDataRowBoundに問題があります。セル[0]の全欄に色がついているようです。他のセルはその上に値を持っていますが、それでも私のセルは色づけされています。ここに私のコードです。DataGridView行の色を変更する

protected void GridUserMessage_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     if (String.IsNullOrWhiteSpace(e.Row.Cells[0].Text)) 
     { 
      e.Row.BackColor = System.Drawing.Color.Red; 
     } 
    } 
} 

この問題は何ですか?

答えて

0

あなたが白(またはあなたのグリッドがデフォルトで持っているいくつかの他の色)にセルの色を設定elseブロックを追加

protected void GridUserMessage_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     if (String.IsNullOrWhiteSpace(e.Row.Cells[0].Text)) 
     { 
      e.Row.BackColor = System.Drawing.Color.Red; 
     } 
     else 
     { 
      e.Row.BackColor = System.Drawing.Color.White; 
     } 
    } 
} 

EDIT: 私は、CSSのスタイリングがこれを行うには良いアプローチだと思います。 マークアップのCSSクラスを行に設定し、RowDataBoundイベントに必要に応じて別のクラスを設定します。

e.Row.CssClass = "red-row"; 
0

あなたがチェックされています。このような何か:セルの値は次のように、空の文字列である場合

マークアップで「正常な」スタイルを定義

<asp:GridView runat="server" RowStyle="normal-row" ...> 

とあなたのRowDataBound方法では、別のクラスを設定しますCell [0]値、バックエンドデータベースのストアドプロシージャを変更して選択リストの列名を並べ替える場合、たとえば、

他のあなた/誰かがあなたのコードが簡単に崩壊されるので、その優れた名前で値のために、その行ののDataItemをチェックして、あなたが取ることができることに基づいてする

SELECT Id,LastName,FirstName FROM EMPLOYEE 

にそれを変更した後

SELECT Id,FirstName,LastName FROM EMPLOYEE 

、BEFORE決定。あなたのコードから書き直されたコードを見てください。

protected void GridUserMessage_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    // Check database column has value or not. 
    if(String.IsNullOrEmpty(Convert.ToString(DataBinder.Eval(e.Row.DataItem, "ColumnNameOfDataYouWantToCheck"))) 
    { 
     e.Row.BackColor = System.Drawing.Color.Red; 
    } 
} 
} 
関連する問題