Mengubah Warna Baris DataGridView

Saya mengalami masalah dengan onDataRowBound. Tampaknya itu memberi warna pada seluruh kolom sel[0]. Sel lain memiliki nilai di dalamnya tetapi tetap mewarnai sel saya. Ini kode saya.

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;
        }
    }
}

Apa yang salah dengan ini?


person EnzoZow    schedule 17.05.2017    source sumber


Jawaban (2)


Tambahkan blok else tempat Anda mengatur warna sel menjadi putih (atau warna lain yang dimiliki grid Anda secara default)

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: Saya pikir gaya CSS akan menjadi pendekatan yang lebih baik untuk melakukan ini. Di markup Anda, atur kelas CSS ke baris Anda dan pada acara RowDataBound, atur kelas lain sesuai kebutuhan. Sesuatu seperti ini:

tentukan gaya "normal" dalam markup

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

dan dalam metode RowDataBound Anda, tetapkan kelas lain jika nilai sel berupa string kosong, seperti ini:

e.Row.CssClass = "red-row";
person Nino    schedule 17.05.2017

Anda sedang memeriksa nilai Sel[0], bagaimana jika Anda mengubah prosedur tersimpan database backend dan mengatur ulang nama kolom dalam daftar pilihan, misalnya, Anda mengalami

SEBELUM

SELECT Id,FirstName,LastName FROM EMPLOYEE

SETELAH Anda/orang lain mengubahnya

SELECT Id,LastName,FirstName FROM EMPLOYEE

kode Anda akan mudah diciutkan, jadi lebih baik periksa DataItem baris tersebut untuk mengetahui nilai dengan nama dan berdasarkan itu Anda dapat mengambil keputusan. Lihat kode yang ditulis ulang dari kode Anda.

 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;
    }
 }
}
person yogesh keraliya    schedule 17.05.2017