后面这个是使DGRIG列和行变颜色的类 #region 自定义模板列 /// <summary> /// 自定义模板列 /// </summary> public class MyColumn:System.Windows .Forms .DataGridTextBoxColumn { /// <summary> /// MyColumn构造函数 /// </summary> public MyColumn(){}
protected override void Paint(Graphics g, Rectangle bounds, CurrencyManager source, int rowNum, Brush backBrush, Brush foreBrush, bool alignToRight) { switch (this.GetColumnValueAtRow (source,rowNum).ToString ()) { case "单间": backBrush=Brushes.OrangeRed ;break; case "一房一厅": backBrush=Brushes.LimeGreen;break; case "二房一厅": backBrush=Brushes.Blue;break; default: backBrush=backBrush;break; case "二房二厅": backBrush=Brushes.Orange;break; case "三房一厅": backBrush=Brushes.PaleGreen;break; case "三房二厅": backBrush=Brushes.SeaGreen;break; case "四房一厅": backBrush=Brushes.Yellow ;break; case "四房两厅": backBrush=Brushes.Tomato ;break; case "股司": backBrush=Brushes.LimeGreen ;break; case "配司": backBrush=Brushes.YellowGreen ;break; case "物业": backBrush=Brushes.LightSeaGreen ;break; case "营销": backBrush=Brushes.PaleVioletRed ;break; case "集司": backBrush=Brushes.MediumSpringGreen ;break;
}
base.Paint (g, bounds, source, rowNum, backBrush, foreBrush, alignToRight); } } public class DataGridColoredTextBoxColumn : DataGridTextBoxColumn { private int column; public DataGridColoredTextBoxColumn() { column = -2; } 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) { // the idea is to conditionally set the foreBrush and/or backbrush // depending upon some crireria on the cell value // Here, we color anything that begins with a letter higher than 'F' try {
DataGrid grid = this.DataGridTableStyle.DataGrid; //first time set the column properly if (column == -2) { int i = this.DataGridTableStyle.GridColumnStyles.IndexOf(this); if (i > -1) column = i; } if(grid.CurrentRowIndex == rowNum && grid.CurrentCell.ColumnNumber == column) { backBrush = new LinearGradientBrush(bounds, Color.FromArgb(255, 200, 200), Color.FromArgb(128, 20, 20), LinearGradientMode.BackwardDiagonal); foreBrush = new SolidBrush(Color.White); } } catch(Exception ex){ /* empty catch */ } finally { // make sure the base class gets called to do the drawing with // the possibly changed brushes base.Paint(g, bounds, source, rowNum, backBrush, foreBrush, alignToRight); } } protected override void Edit(System.Windows.Forms.CurrencyManager source, int rowNum, System.Drawing.Rectangle bounds, bool readOnly, string instantText, bool cellIsVisible) { //do nothing } } #endregion }
把英文名换中文名,你可用Select 语名,给表中字段加别名,换掉!也可能自己定义DataTable 对角,并自己加DataColumn对象,在创建DataColumn对象给表中加上中文名!
<asp:datagrid id=dgdBranch runat="server" Width="445px" DataSource="<%# BraTB %>" DataKeyField="branchid" BorderWidth="1px" BackColor="#F7F7F7" BorderColor="#F7F7F7" CssClass="table" BorderStyle="Solid" AutoGenerateColumns="False" Font-Size="X-Small">
<SelectedItemStyle BackColor="Transparent"></SelectedItemStyle>
<EditItemStyle ForeColor="Black" BackColor="Black"></EditItemStyle>
<AlternatingItemStyle BorderColor="White" BackColor="White"></AlternatingItemStyle>
<ItemStyle CssClass="textcenter" BackColor="#DEDFDE"></ItemStyle>
<HeaderStyle CssClass="headcenter"></HeaderStyle>
<FooterStyle CssClass="headcenter"></FooterStyle>
<Columns>
<asp:BoundColumn DataField="BranchName" HeaderText="机构名称"></asp:BoundColumn>
<asp:BoundColumn DataField="SimpleCode" HeaderText="机构简称"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="更新机构信息">
<ItemTemplate>
<asp:LinkButton runat="server" Text="编辑" CommandName="Edit" CausesValidation="false"></asp:LinkButton>
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton runat="server" Text="更新" CommandName="Update" CausesValidation="false"></asp:LinkButton>
<asp:LinkButton runat="server" Text="取消" CommandName="Cancel" CausesValidation="false"></asp:LinkButton>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="删除" ItemStyle-Width="10%">
<ItemTemplate>
<asp:ImageButton CausesValidation="False" id="Imagebutton2" runat="server" ImageUrl="../img/delete.gif" CommandName="delete" AlternateText="删除此项机构"></asp:ImageButton>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
解决,如果这个感觉不好,你用两个datagrid控件,一边放主表,一边放从表,点击主表,从表自动变化!
{
DateTime dt1 = dateTimePicker1.Value;
DateTime dt2 = dateTimePicker2.Value;
int year1 = dt1.Year;
int month1=dt1.Month;
int year2 = dt2.Year;
int month2=dt2.Month;
// if (textBox1.Text.Trim().Length ==0)
// {
// MessageBox.Show("请输入工资编号!","系统提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);
// return;
// }
DataView myDv;
DataOper DataOper=new DataOper();
//YCSD008ID是返回的一个DataTable
YCSD008ID=DataOper.SP_GET_YCSD008_ID1(textBox1.Text.Trim(),month1.ToString(),month2.ToString(),year1.ToString(),year2.ToString(),"SP_GET_YCSD.SP_GET_YCSD008_ID1","YCSD008ID"); System.Windows .Forms .DataGridTableStyle tbstyle=new DataGridTableStyle ();
tbstyle.MappingName="YCSD008ID";
tbstyle.HeaderBackColor=Color.LemonChiffon;
tbstyle.SelectionBackColor=Color.DodgerBlue;
tbstyle.GridLineColor=Color.LightSkyBlue;
MyColumn mc;
DataGridColoredTextBoxColumn aColumnTextColumn ; aColumnTextColumn=new DataGridColoredTextBoxColumn ();
aColumnTextColumn.MappingName="WAGEID";
aColumnTextColumn.HeaderText="工资编号";
aColumnTextColumn.NullText ="";
aColumnTextColumn.Width =120;
aColumnTextColumn.Alignment=HorizontalAlignment.Center;
aColumnTextColumn.ReadOnly=true;
tbstyle.GridColumnStyles.Add(aColumnTextColumn);
aColumnTextColumn=new DataGridColoredTextBoxColumn ();
aColumnTextColumn.MappingName="name";
aColumnTextColumn.HeaderText="姓名";
aColumnTextColumn.NullText ="";
aColumnTextColumn.Width =120;
aColumnTextColumn.Alignment=HorizontalAlignment.Center;
aColumnTextColumn.ReadOnly=true;
tbstyle.GridColumnStyles.Add(aColumnTextColumn);
aColumnTextColumn=new DataGridColoredTextBoxColumn ();
aColumnTextColumn.MappingName="year";
aColumnTextColumn.HeaderText="年份";
aColumnTextColumn.NullText ="";
aColumnTextColumn.Width =120;
aColumnTextColumn.Alignment=HorizontalAlignment.Center;
aColumnTextColumn.ReadOnly=true;
tbstyle.GridColumnStyles.Add(aColumnTextColumn); aColumnTextColumn=new DataGridColoredTextBoxColumn ();
aColumnTextColumn.MappingName="monthid";
aColumnTextColumn.HeaderText="月份";
aColumnTextColumn.NullText ="";
aColumnTextColumn.Width =120;
aColumnTextColumn.Alignment=HorizontalAlignment.Center;
aColumnTextColumn.ReadOnly=true;
tbstyle.GridColumnStyles.Add(aColumnTextColumn);
aColumnTextColumn=new DataGridColoredTextBoxColumn ();
aColumnTextColumn.MappingName="watercount";
aColumnTextColumn.HeaderText="用水量";
aColumnTextColumn.NullText ="";
aColumnTextColumn.Width =120;
aColumnTextColumn.Alignment=HorizontalAlignment.Center;
aColumnTextColumn.ReadOnly=true;
tbstyle.GridColumnStyles.Add(aColumnTextColumn);
aColumnTextColumn=new DataGridColoredTextBoxColumn ();
aColumnTextColumn.MappingName="waterrate";
aColumnTextColumn.HeaderText="当月水费";
aColumnTextColumn.NullText ="";
aColumnTextColumn.Width =120;
aColumnTextColumn.Alignment=HorizontalAlignment.Center;
aColumnTextColumn.ReadOnly=true;
tbstyle.GridColumnStyles.Add(aColumnTextColumn);
aColumnTextColumn=new DataGridColoredTextBoxColumn ();
aColumnTextColumn.MappingName="eleccount";
aColumnTextColumn.HeaderText="用电量";
aColumnTextColumn.NullText ="";
aColumnTextColumn.Width =120;
aColumnTextColumn.Alignment=HorizontalAlignment.Center;
aColumnTextColumn.ReadOnly=true;
tbstyle.GridColumnStyles.Add(aColumnTextColumn);
aColumnTextColumn=new DataGridColoredTextBoxColumn ();
aColumnTextColumn.MappingName="elecrate";
aColumnTextColumn.HeaderText="当月电费";
aColumnTextColumn.NullText ="";
aColumnTextColumn.Width =120;
aColumnTextColumn.Alignment=HorizontalAlignment.Center;
aColumnTextColumn.ReadOnly=true;
tbstyle.GridColumnStyles.Add(aColumnTextColumn);
aColumnTextColumn=new DataGridColoredTextBoxColumn ();
aColumnTextColumn.MappingName="ratetotal";
aColumnTextColumn.HeaderText="当月总费用";
aColumnTextColumn.NullText ="";
aColumnTextColumn.Width =120;
aColumnTextColumn.Alignment=HorizontalAlignment.Center;
aColumnTextColumn.ReadOnly=true;
tbstyle.GridColumnStyles.Add(aColumnTextColumn);
aColumnTextColumn=new DataGridColoredTextBoxColumn ();
aColumnTextColumn.MappingName="workunit";
aColumnTextColumn.HeaderText="工作单位";
aColumnTextColumn.NullText ="";
aColumnTextColumn.Width =120;
aColumnTextColumn.Alignment=HorizontalAlignment.Center;
aColumnTextColumn.ReadOnly=true;
tbstyle.GridColumnStyles.Add(aColumnTextColumn);
aColumnTextColumn=new DataGridColoredTextBoxColumn ();
aColumnTextColumn.MappingName="creatroom";
aColumnTextColumn.HeaderText="生成房号";
aColumnTextColumn.NullText ="";
aColumnTextColumn.Width =120;
aColumnTextColumn.Alignment=HorizontalAlignment.Center;
aColumnTextColumn.ReadOnly=true;
tbstyle.GridColumnStyles.Add(aColumnTextColumn); mc=new MyColumn ();
mc.MappingName="companytype";
mc.HeaderText="公司类别";
mc.NullText ="";
mc.Width =80;
mc.Alignment=HorizontalAlignment.Center;
mc.ReadOnly=true;
tbstyle.GridColumnStyles.Add(mc);
aColumnTextColumn=new DataGridColoredTextBoxColumn ();
aColumnTextColumn.MappingName="dittyname";
aColumnTextColumn.HeaderText="小区名称";
aColumnTextColumn.NullText ="";
aColumnTextColumn.Width =120;
aColumnTextColumn.Alignment=HorizontalAlignment.Center;
aColumnTextColumn.ReadOnly=true;
tbstyle.GridColumnStyles.Add(aColumnTextColumn);
aColumnTextColumn=new DataGridColoredTextBoxColumn ();
aColumnTextColumn.MappingName="ridgname";
aColumnTextColumn.HeaderText="栋号";
aColumnTextColumn.NullText ="";
aColumnTextColumn.Width =120;
aColumnTextColumn.Alignment=HorizontalAlignment.Center;
aColumnTextColumn.ReadOnly=true;
tbstyle.GridColumnStyles.Add(aColumnTextColumn); aColumnTextColumn=new DataGridColoredTextBoxColumn ();
aColumnTextColumn.MappingName="roomid";
aColumnTextColumn.HeaderText="房号";
aColumnTextColumn.NullText ="";
aColumnTextColumn.Width =120;
aColumnTextColumn.Alignment=HorizontalAlignment.Center;
aColumnTextColumn.ReadOnly=true;
tbstyle.GridColumnStyles.Add(aColumnTextColumn);
mc=new MyColumn ();
mc.MappingName="homeformname";
mc.HeaderText="房型名称";
mc.NullText ="";
mc.Width =80;
mc.Alignment=HorizontalAlignment.Center;
mc.ReadOnly=true;
tbstyle.GridColumnStyles.Add(mc); myDv=YCSD008ID.DefaultView;
myDv.AllowNew= false;
if(this.dataGrid3.TableStyles.Count==0)
{
this.dataGrid3 .TableStyles .Add (tbstyle);
dataGrid3.DataSource=myDv;
}
else
{
dataGrid3.DataSource=myDv;
} }
#region 自定义模板列
/// <summary>
/// 自定义模板列
/// </summary>
public class MyColumn:System.Windows .Forms .DataGridTextBoxColumn
{
/// <summary>
/// MyColumn构造函数
/// </summary>
public MyColumn(){}
protected override void Paint(Graphics g, Rectangle bounds, CurrencyManager source, int rowNum, Brush backBrush, Brush foreBrush, bool alignToRight)
{
switch (this.GetColumnValueAtRow (source,rowNum).ToString ())
{
case "单间":
backBrush=Brushes.OrangeRed ;break;
case "一房一厅":
backBrush=Brushes.LimeGreen;break;
case "二房一厅":
backBrush=Brushes.Blue;break;
default:
backBrush=backBrush;break;
case "二房二厅":
backBrush=Brushes.Orange;break;
case "三房一厅":
backBrush=Brushes.PaleGreen;break;
case "三房二厅":
backBrush=Brushes.SeaGreen;break;
case "四房一厅":
backBrush=Brushes.Yellow ;break;
case "四房两厅":
backBrush=Brushes.Tomato ;break;
case "股司":
backBrush=Brushes.LimeGreen ;break;
case "配司":
backBrush=Brushes.YellowGreen ;break;
case "物业":
backBrush=Brushes.LightSeaGreen ;break;
case "营销":
backBrush=Brushes.PaleVioletRed ;break;
case "集司":
backBrush=Brushes.MediumSpringGreen ;break;
}
base.Paint (g, bounds, source, rowNum, backBrush, foreBrush, alignToRight);
}
}
public class DataGridColoredTextBoxColumn : DataGridTextBoxColumn
{
private int column; public DataGridColoredTextBoxColumn()
{
column = -2;
} 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)
{
// the idea is to conditionally set the foreBrush and/or backbrush
// depending upon some crireria on the cell value
// Here, we color anything that begins with a letter higher than 'F'
try
{
DataGrid grid = this.DataGridTableStyle.DataGrid; //first time set the column properly
if (column == -2)
{
int i = this.DataGridTableStyle.GridColumnStyles.IndexOf(this);
if (i > -1)
column = i;
} if(grid.CurrentRowIndex == rowNum && grid.CurrentCell.ColumnNumber == column)
{
backBrush = new LinearGradientBrush(bounds, Color.FromArgb(255, 200, 200), Color.FromArgb(128, 20, 20), LinearGradientMode.BackwardDiagonal);
foreBrush = new SolidBrush(Color.White);
}
}
catch(Exception ex){ /* empty catch */ }
finally
{
// make sure the base class gets called to do the drawing with
// the possibly changed brushes
base.Paint(g, bounds, source, rowNum, backBrush, foreBrush, alignToRight);
}
} protected override void Edit(System.Windows.Forms.CurrencyManager source, int rowNum, System.Drawing.Rectangle bounds, bool readOnly, string instantText, bool cellIsVisible)
{
//do nothing
}
}
#endregion
}
http://blog.csdn.net/zhzuo/archive/2004/08/06/67016.aspx
显示表头文字为中文,可以自己指定,
比如修改第一列
this.dataGrid1.TableStyles[0].GridColumnStyles[0].HeaderText = "新的列头";
更多看,
http://www.syncfusion.com/FAQ/WindowsForms/FAQ_c44c.aspx
成都理工学生求兼职
MSN:[email protected]
QQ技术群4329478
xd279545692(我爱C#.NET编程) 批评的是