在VS 2005 中处理datagrid,我觉得很不方便,特别是在处理列头时,也花费了不少时间
现在整理一下,以后还会用到也许
------------------------------------------------------------------------------------------------------------------------------
用一个实体类,来说明问题
//这是进入采购单信息列表时显示简要的单据列表
class BriefBillList
{
//简要列表基本信息
private string _BillNumber;
private string _CarNumber;
private string _CreateBillMan;
//单据号
public string BillNumber
{
get
{
return _BillNumber;
}
set
{
_BillNumber = value;
}
}
//车号
public string CarNumber
{
get
{
return _CarNumber;
}
set
{
_CarNumber = value;
}
}
//制单人
public string CreateBillMan
{
get
{
return _CreateBillMan;
}
set
{
_CreateBillMan = value;
}
}
}
1:首先我们需要填充一个list
//进入采购单信息列表时显示简要的单据列表
public static List<PurchaseInStorageData.BriefBillList> GetBriefBillList()
{
//这里可以从服务得到
//现在以几个实例说明
List<PurchaseInStorageData.BriefBillList> list = new List<UFIDA.TotalLogistics.BarCode.PurchaseInStorageData.BriefBillList>();
Random random = new Random();
for (int i = 0; i < 3; i++)
{
PurchaseInStorageData.BriefBillList item = new UFIDA.TotalLogistics.BarCode.PurchaseInStorageData.BriefBillList();
item.BillNumber = PurchaseInStorageOperation.RandomCode.GetRandomNumber(3, 8);
item.CarNumber = ((char)random.Next(65, 90)).ToString() + i;
item.CreateBillMan = "Man" + i;
list.Add(item);
}
return list;
}
2:然后我们构建一个Table,将list数据填充到Table
public static DataTable GetBriefDataTable()
{
//构造DataTable
DataTable dt=new DataTable();
dt.Columns.Add(new DataColumn("BillNumber", typeof(string)));
dt.Columns.Add(new DataColumn("CarNumber", typeof(string)));
dt.Columns.Add(new DataColumn("CreateMan", typeof(string)));
List<PurchaseInStorageData.BriefBillList> list = GetBriefBillList();
//获取数据到datatable
for (int i = 0; i < list.Count; i++)
{
//添加行
DataRow dr = dt.NewRow();
dr["BillNumber"] = list[i].BillNumber;
dr["CarNumber"] = list[i].CarNumber;
dr["CreateMan"] = list[i].CreateBillMan;
dt.Rows.Add(dr);
}
return dt;
}
3:然后我们来处理datagrid,显示数据,需要建立一个style,绑定Table列,这样才能处理
DataGridTableStyle ats = new DataGridTableStyle();
DataGridTextBoxColumn BillNumberColumn = new DataGridTextBoxColumn();
BillNumberColumn.Width = 100;
BillNumberColumn.HeaderText = "单据号";
BillNumberColumn.MappingName = "BillNumber";
ats.GridColumnStyles.Add(BillNumberColumn);
DataGridTextBoxColumn CarNumberColumn = new DataGridTextBoxColumn();
CarNumberColumn.Width = 60;
CarNumberColumn.HeaderText = "车号";
CarNumberColumn.MappingName = "CarNumber";
ats.GridColumnStyles.Add(CarNumberColumn);
DataGridTextBoxColumn CreateBillManColumn = new DataGridTextBoxColumn();
CreateBillManColumn.Width = 54;
CreateBillManColumn.HeaderText = "制单人";
CreateBillManColumn.MappingName = "CreateMan";
ats.GridColumnStyles.Add(CreateBillManColumn);
dg_BillBrief.TableStyles.Add(ats);
//dg_BillBrief.DataSource = PurchaseInStorageOperation.FillBillIformation.GetBriefBillList();
dg_BillBrief.DataSource = PurchaseInStorageOperation.FillBillIformation.GetBriefDataTable();
4:这样就行了,可以显示我们自己设定的列标题