
نوشته شده توسط
RezaJP
میتونم بپرسم چطوری؟ :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);
}
}
}
}