تغیر رنگ دیتا گیرید ویو RowDataBind
سلام به همه دوستان
من یه دیتا گیرید ویو دارم توش یک مقادیر عددی نشون داده میشه مثلا عدد 28 یا هر عددی حالا میخوام مثلا وقتی عد بین 10 تا 50 بود دیتا گرید ویو رنگش بشه قرمز و 50 تا 70 بشه سبز و 70 تا 100 هم بشه ابی یکم سرچ کردم فهمیدم با RowDataBind میشه این کارو کرد ولی نمی دونم چجور کدش و اضافه کنم میشه دوستان و اساتید راهنمایی کنن یا کدش و توضیح بدن ممنون
نقل قول: تغیر رنگ دیتا گیرید ویو RowDataBind
در همون رخداد rowdatabound بصورت زیر عمل کنین:
WITH E.ROW.CELLS(CellNumber)
SELECT CASE .TEXT
CASE 10 TO 50
.FORECOLOR=DRAWING.COLOR.RED
CASE 51 TO 70
.FORECOLOR=DRAWING.COLOR.GREEN
CASE 71 TO 100
.FORECOLOR=DRAWING.COLOR.BLUE
CASE ELSE
.FORECOLOR=DRAWING.COLOR.BLACK
END SELECT
END WITH
البته بهتره قبلش چک کنین که rowtype برابر datarow باشه
نقل قول: تغیر رنگ دیتا گیرید ویو RowDataBind
من یه گرید ویو دارم که با این کد sELECT میشه و مقدار میگیره
{
string strSQLconnection =
"Data Source=HAMED;Initial Catalog=binja;Integrated Security=True;Pooling=False";
SqlConnection sqlConnection = new SqlConnection(strSQLconnection);
SqlCommand sqlCommand = new SqlCommand("select a,b from tb1", sqlConnection);
sqlConnection.Open();
SqlDataReader reader = sqlCommand.ExecuteReader();
GridView1.DataSource = reader;
GridView1.DataBind();
}
میخوام اگه اعداد نمایش داده شده توی سلول a , b بین شرط که گفتم باشن رنگی بشن میشه راه نمایی کنید
نقل قول: تغیر رنگ دیتا گیرید ویو RowDataBind
مهم نیست که دیتا رو چجوری میخونین
روش همین هست که گفته شد
نقل قول: تغیر رنگ دیتا گیرید ویو RowDataBind
دوستان من این کد رو نوشتم کار نمیکنه
DataTable dt = new DataTable();
string connstr = @"Data Source=HAMED;Initial Catalog=mydb;Integrated Security=True;Pooling=False";
using (SqlConnection cn = new SqlConnection(connstr))
{
SqlDataAdapter adp = new SqlDataAdapter("select a,b,c from tb1", cn);
adp.Fill(dt);
}
if (dt.Rows.Count > 0)
{
gvcustomers.DataSource = dt;
gvcustomers.DataBind();
}
}
protected void gvcustomers_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (e.Row.Cells[2].Text.CompareTo("hamed") == 0)
{
e.Row.CssClass = "red";
}
else if (e.Row.Cells[2].Text.CompareTo("lii") == 0)
{
e.Row.CssClass = "green";
}
}
}
توی تگ استایل css هم کد رنگ هارو وارد کردم
نقل قول: تغیر رنگ دیتا گیرید ویو RowDataBind
قبل از هر چیز کد ها رو در تگ مناسب قرار بدین تا خوانا باشه
اول مطمئن بشین که استایل رو درست تعریف کردین: یک label با استایل red به صفحه اضافه کنین و نتیجه رو چک کنین.
اگر درست بود بجای if خودتون با کد زیر چک کنین:
if e.row.rowindex mod 2=0 then
e.row.rowstyle="red"
else
e.row.rowstyle="green"
endif
اگر درست بود باید If خودتون رو چک کنین : یا مقادیر مورد مقایسه نادرسته یا cellnumber
نقل قول: تغیر رنگ دیتا گیرید ویو RowDataBind
با سلام مشکل برطرف شد :لبخندساده::تشویق:
من با این کد به نتیجه رسیدم داخل رخداد rowdatabound گرید ویو نوشتم
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
float min = float.Parse(e.Row.Cells[0].Text);
foreach (TableCell cell in e.Row.Cells)
{
if (min == 0)
{
cell.BackColor = Color.Black;
}
if (min > 0 && min <= 12.4)
{
cell.BackColor = Color.Black;
}
if (min >= 12.5 && min <= 24.9)
{
cell.BackColor = Color.DarkGray;
}
if (min >= 25 && min <= 37.4)
{
cell.BackColor = Color.Crimson;
}
if (min >= 37.5 && min <= 49.9)
{
cell.BackColor = Color.Red;
}
if (min >= 50 && min <= 62.4)
{
cell.BackColor = Color.Orange;
}
if (min >= 62.5 && min <= 74.9)
{
cell.BackColor = Color.Yellow;
}
if (min >= 75 && min <= 87.4)
{
cell.BackColor = Color.GreenYellow;
}
if (min >= 87.5 && min <= 100)
{
cell.BackColor = Color.Green;
}