PDA

View Full Version : تغییر رنگ یک Row از DataGrid



سار
یک شنبه 01 خرداد 1384, 22:28 عصر
چطور میشه این کار رو کرد اما با یک شرط خاص
مثلا اگر Status یک بود آبی و اگر 2 قرمز و ...

RezaJP
یک شنبه 01 خرداد 1384, 23:19 عصر
اینجوریشو نمیدونم اما میشه 1 در میان از دو رنگ مختلف استفاده کرد

aidinwashere
دوشنبه 02 خرداد 1384, 02:40 صبح
اینجوریشو نمیدونم اما میشه 1 در میان از دو رنگ مختلف استفاده کرد
بوسیله Alternate ها.

RezaJP
دوشنبه 02 خرداد 1384, 18:29 عصر
ممنون البته من خواستم خود ایشون هم یه تلاشی بکنن :oops:

سار
سه شنبه 03 خرداد 1384, 15:59 عصر
من در مورد این Alternate جستجو کردم ولی بیشتر به برنامه های وب بیس رسیدم!!!
من تو وین فرم میخوام این کار رو بکنم میشه یکم بیشتر برام توضیح بدید؟

سار
سه شنبه 03 خرداد 1384, 21:44 عصر
از هر دو نفر شما سپاسگذارم.
بالاخره تونستم حلش کنم.

چیزی که میخواستم رو ساختم ولی نه با Alternate ها
چون اصلا نمیدوستم اون چیه.

در هر حال از توجه شما سپاسگذارم :flower:

RezaJP
چهارشنبه 04 خرداد 1384, 18:11 عصر
میتونم بپرسم چطوری؟ :mrgreen:

سار
چهارشنبه 04 خرداد 1384, 22:24 عصر
میتونم بپرسم چطوری؟ :mrgreen:
به سختی :mrgreen:
من از کد زیر استفاده کردم.
خوشهال میشم اگر روش ساده تر و کار آمدتری هم هست بهم بگید.

private void GridStyle()
{
int numCols = ds.Tables[0].Columns.Count;
DataGridTableStyle tableStyle = new DataGridTableStyle();
tableStyle.MappingName = ds.Tables[0].TableName.ToString();
DataGridColoredTextBoxColumn aColumnTextColumn ;
delegateGetColorRowCol d = new delegateGetColorRowCol(MyGetColorRowCol);
for(int i = 0; i < numCols; ++i)
{
aColumnTextColumn = new DataGridColoredTextBoxColumn(d, i);
switch (i)
{
case 0:
aColumnTextColumn.HeaderText = "کد";
aColumnTextColumn.Width = 40;
aColumnTextColumn.MappingName = ds.Tables[0].Columns[i].ColumnName;
aColumnTextColumn.NullText = "";
break;
case 1:
aColumnTextColumn.HeaderText = "تاریخ";
aColumnTextColumn.Width = 60;
aColumnTextColumn.MappingName= ds.Tables[0].Columns[i].ColumnName;
aColumnTextColumn.NullText = "";
break;
case 2:
aColumnTextColumn.HeaderText = "خریدار";
aColumnTextColumn.Width = 110;
aColumnTextColumn.MappingName = ds.Tables[0].Columns[i].ColumnName;
aColumnTextColumn.NullText = "";
break;
case 3:
aColumnTextColumn.HeaderText = "وضعیت";
aColumnTextColumn.Width = 55;
aColumnTextColumn.MappingName = ds.Tables[0].Columns[i].ColumnName;
aColumnTextColumn.NullText = "";
break;
case 4:
aColumnTextColumn.HeaderText = "تاریخ آخرین تغییر";
aColumnTextColumn.Width = 60;
aColumnTextColumn.MappingName= ds.Tables[0].Columns[i].ColumnName;
aColumnTextColumn.NullText = "";
break;
case 5:
aColumnTextColumn.HeaderText = "شرح";
aColumnTextColumn.Width = 200;
aColumnTextColumn.MappingName= ds.Tables[0].Columns[i].ColumnName;
aColumnTextColumn.NullText = "";
break;
}
tableStyle.GridColumnStyles.Add(aColumnTextColumn) ;
}
grdMaster.TableStyles.Clear();
grdMaster.TableStyles.Add(tableStyle);

}

public Color MyGetColorRowCol(int row, int col)
{
Color c = Color.Black;
int i = 0;
System.Windows.Forms.DataGridCell selectedCell = grdMaster.CurrentCell;
object selectedItem=null;
string cellValue = "";
selectedItem = grdMaster[row,3];
cellValue = Convert.ToString(selectedItem);
if (cellValue.ToString() == "انتظار")
c = Color.Blue;
else if (cellValue.ToString() == "لغو شده")
c = Color.Red;
else if (cellValue.ToString() == "تایید شده")
c = Color.Black ;
return c;
}

public delegate Color delegateGetColorRowCol(int row, int col);
public class DataGridColoredTextBoxColumn : DataGridTextBoxColumn
{
private delegateGetColorRowCol _getColorRowCol;
private int _column;
public DataGridColoredTextBoxColumn(delegateGetColorRowCo l getcolorRowCol, int column)
{
_getColorRowCol = getcolorRowCol;
_column = column;
}


protected override void Paint(System.Drawing.Graphics g, System.Drawing.Rectangle bounds, System.Windows.Forms.CurrencyManager source, int rowNum, System.Drawing.Brush backBrush, System.Drawing.Brush foreBrush, bool alignToRight)
{
try
{
backBrush = new SolidBrush(Color.White);
foreBrush = new SolidBrush(_getColorRowCol(rowNum, this._column));
}

catch (Exception ex){ /* empty catch */ }
finally
{
base.Paint(g, bounds, source, rowNum, backBrush, foreBrush, alignToRight);
}
}
}
}

bpzone
چهارشنبه 21 شهریور 1386, 11:04 صبح
میشه یک راه ساده تر بیان کنید ؟!؟!
من از کد زیر نتونستم هیچ نتیجه ای بگیرم :ناراحت: