سلام
چگونه می توانم ردیفهای دیتاگرید را(مثلا ردیفهای که در ستون ها نام احمد باشد)رنگی کنم
Printable View
سلام
چگونه می توانم ردیفهای دیتاگرید را(مثلا ردیفهای که در ستون ها نام احمد باشد)رنگی کنم
dataGridView1.AlternatingRowsDefaultCellStyle.Back Color = Color.LightBlue;
.................................................. ..........
private void checkForSurveyColour()
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
try
{
string CNumColour = row.Cells["Name"].FormattedValue.ToString();
if (CNumColour != null)
{
foreach (DataGridViewCell cells in row.Cells)
{
if (CNumColour == "احمد")
{
cells.Style.ForeColor = Color.DarkBlue;
}
else if (CNumColour == "بهمن")
{
cells.Style.ForeColor = Color.DarkGray;
}
}
}
}
catch (System.Exception ex)
{
}
}
}
توی تلریک داخل خود تنظیمات دیتاگرید میتونید بدون این کدها تغییرات سطر و رنگی کردن سطرها (یکی در میان) یا سطرهای دارای مقادیر خاص را براحتی و بدون هیچ کدی انجام بدید
دررویداد CellFormatting می تونین اینطوری بنویسین :
void radGridView1_CellFormatting(object sender, CellFormattingEventArgs e)
{
if (e.Column.Name == "name"
&& !string.IsNullOrEmpty(e.Row.Cells["name"].Value.ToString())
&& e.Row.Cells["name"].Value.ToString()=="احمد")
{
e.CellElement.DrawFill = true;
e.CellElement.BackColor = Color.Red;
e.CellElement.NumberOfColors = 1;
}
else
{
e.CellElement.ResetValue(LightVisualElement.DrawFi llProperty, ValueResetFlags.Local);
e.CellElement.ResetValue(LightVisualElement.BackCo lorProperty, ValueResetFlags.Local);
e.CellElement.ResetValue(LightVisualElement.Number OfColorsProperty, ValueResetFlags.Local);
}
}
همون کد قبلی رو می تونی یه خورده تغییر بدی ...............................
ویا اینکه اینطوری بنویسی :
private void radGridView1_ViewRowFormatting(object sender, Telerik.WinControls.UI.RowFormattingEventArgs e)
{
if (e.RowElement.RowInfo.Cells["name"].Value != null)
{
if (e.RowElement.RowInfo.Cells["name"].Value=="مهوش")
{
e.RowElement.BackColor = Color.Red;
e.RowElement.DrawFill = true;
}
else
{
e.RowElement.BackColor = Color.Green;
e.RowElement.DrawFill = true;
}
}
}
سلام
private void dgRepresentative_ViewRowFormatting(object sender, Telerik.WinControls.UI.RowFormattingEventArgs e)
{
if (e.RowElement.RowInfo.Cells["License"].Value != null)
{
if (e.RowElement.RowInfo.Cells["License"].Value != "مجاز")
{
e.RowElement.BackColor = Color.Red;
e.RowElement.DrawFill = true;
}
else
{
e.RowElement.BackColor = Color.Green;
e.RowElement.DrawFill = true;
}
}
}
من کد بالا را نوشته ام اما همه ردیفها را قرمز نمایش می دهد؟؟؟؟
لطفا رسیدگی کنید
چون متن غیز مجاز هم وجود دارد
باسپاس
سلام
private void dgRepresentative_ViewRowFormatting(object sender, Telerik.WinControls.UI.RowFormattingEventArgs e)
{
if (e.RowElement.RowInfo.Cells["License"].Value != null)
{
if (e.RowElement.RowInfo.Cells["License"].Value != "مجاز")
{
e.RowElement.BackColor = Color.Red;
e.RowElement.DrawFill = true;
}
else
{
e.RowElement.BackColor = Color.Green;
e.RowElement.DrawFill = true;
}
}
}
من کد بالا را نوشته ام اما همه ردیفها را قرمز نمایش می دهد؟؟؟؟
لطفا رسیدگی کنید
چون متن غیز مجاز هم وجود دارد
باسپاس
اینو امتحان کن :
private void radGridView1_RowFormatting(object sender, RowFormattingEventArgs e)
{
if (e.RowElement.RowInfo.Cells["name"].Value i= "مجاز")
{
e.RowElement.DrawFill = true;
e.RowElement.GradientStyle = GradientStyles.Solid;
e.RowElement.BackColor = Color.Aqua;
}
else
{
e.RowElement.ResetValue(LightVisualElement.BackCol orProperty, ValueResetFlags.Local);
e.RowElement.ResetValue(LightVisualElement.Gradien tStyleProperty, ValueResetFlags.Local);
e.RowElement.ResetValue(LightVisualElement.DrawFil lProperty, ValueResetFlags.Local);
}
}
سلام
باتشکر مشکل اولم حل شد حالا سوال دیگرم این است که چگونه می توانم روی هرسری کلیک کردم رنگ آن سطر تغییر کند
اولا اینکه می تونی در پراپرتی های گرید تلریک یه رنگ خاص برای ردیف انتخاب شده قرار بدی
اما اگه دوست داری با کد نویسی این کار رو بکنی ......... چند تا راه به نظرم می رسه ......... یکی اینکه :
گرید تلریک دارای یک پراپرتی به نام Tag می باشد ...... شما می تونی ردیف جاری رو بگیری و اطلاعات مربوط به اون رو در این پراپرتی ذخیره کنی
و البته بایستی این کار رو در رویداد CurrentRowChanged گرید انجام بدی :
void radGridView1_CurrentRowChanged(object sender, CurrentRowChangedEventArgs e)
{
e.CurrentRow.Tag = "Selected";
}
حالا می تونی اون اطلاعات رو مورد استفاده قرار بدی و در رویداد RowFormatting کار رو یکسره کنی :
void radGridView1_RowFormatting(object sender, RowFormattingEventArgs e)
{
if (e.RowElement.RowInfo.Tag == "Selected")
{
e.RowElement.BackColor = Color.Lime;
e.RowElement.DrawFill = true;
}
else
{
e.RowElement.ResetValue(LightVisualElement.BackCol orProperty, ValueResetFlags.Local);
e.RowElement.ResetValue(LightVisualElement.DrawFil lProperty, ValueResetFlags.Local);
}
}
************************************************** ************************************************** *************************
اما اگه مثل من بطور وحشت انگیزی راحت طلب هستین از یه راه میانبر استفاده می کنین و البته ممکنه بعدا براتون درد سر بشه
اینطوری :
void radGridView1_RowFormatting(object sender, RowFormattingEventArgs e)
{
if (e.RowElement.IsSelected)
{
e.RowElement.BackColor = Color.Red;
}
else
{
e.RowElement.ResetValue(LightVisualElement.BackCol orProperty, Telerik.WinControls.ValueResetFlags.Local);
}
}
سلام.به رویداد نوشته شده توجه کن.
به جای عدد 1،عدد ستون مورد نظرتو بزار
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString().Contains("احمد"))
dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Red;
}