PDA

View Full Version : سوال: تغیر رنگ دیتا گیرید ویو RowDataBind



hamednaderi
دوشنبه 14 مرداد 1398, 08:33 صبح
سلام به همه دوستان
من یه دیتا گیرید ویو دارم توش یک مقادیر عددی نشون داده میشه مثلا عدد 28 یا هر عددی حالا میخوام مثلا وقتی عد بین 10 تا 50 بود دیتا گرید ویو رنگش بشه قرمز و 50 تا 70 بشه سبز و 70 تا 100 هم بشه ابی یکم سرچ کردم فهمیدم با RowDataBind میشه این کارو کرد ولی نمی دونم چجور کدش و اضافه کنم میشه دوستان و اساتید راهنمایی کنن یا کدش و توضیح بدن ممنون

mazoolagh
شنبه 19 مرداد 1398, 11:48 صبح
در همون رخداد 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 باشه

hamednaderi
چهارشنبه 23 مرداد 1398, 14:28 عصر
من یه گرید ویو دارم که با این کد 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 بین شرط که گفتم باشن رنگی بشن میشه راه نمایی کنید

mazoolagh
شنبه 26 مرداد 1398, 12:36 عصر
مهم نیست که دیتا رو چجوری میخونین
روش همین هست که گفته شد

hamednaderi
یک شنبه 27 مرداد 1398, 10:36 صبح
دوستان من این کد رو نوشتم کار نمیکنه

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 هم کد رنگ هارو وارد کردم

mazoolagh
دوشنبه 28 مرداد 1398, 12:22 عصر
قبل از هر چیز کد ها رو در تگ مناسب قرار بدین تا خوانا باشه

اول مطمئن بشین که استایل رو درست تعریف کردین: یک label با استایل red به صفحه اضافه کنین و نتیجه رو چک کنین.
اگر درست بود بجای if خودتون با کد زیر چک کنین:

if e.row.rowindex mod 2=0 then
e.row.rowstyle="red"
else
e.row.rowstyle="green"
endif


اگر درست بود باید If خودتون رو چک کنین : یا مقادیر مورد مقایسه نادرسته یا cellnumber

hamednaderi
دوشنبه 28 مرداد 1398, 14:56 عصر
با سلام مشکل برطرف شد :لبخندساده::تشویق:
من با این کد به نتیجه رسیدم داخل رخداد 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;
}