动态生成模板——DataGrid

模板类:

public class DataGridTemplate : ITemplate
 {
  //创建模板列

  public void InstantiateIn(Control container )      
  {
   LiteralControl lc = new LiteralControl();
   lc.DataBinding += new EventHandler(this.OnDataBinding);
   //数据绑定
   container.Controls.Add(lc);
   //为模板列加入LiteralControl
  }
 
  public void OnDataBinding(object sender, EventArgs e)
  {
   LiteralControl lc = (LiteralControl) sender;//LiteralControl发送绑定请求
   DataGridItem container = (DataGridItem) lc.NamingContainer;
    
   lc.Text = ((DataRowView)container.DataItem)[ColumnName].ToString();//绑定FormNO字段
  }
  private string _ColumnName;
  public  String  ColumnName
  {
   get
   {
    return _ColumnName;
   }
   set
   {
    _ColumnName = value;
   }
  }
 }

调用模板类:
public void AddTemplate(String Name,String NameSubject)
  {
   TemplateColumn TC=new TemplateColumn();
   DataGridTemplate myTemplate=new DataGridTemplate();
   myTemplate.ColumnName=Name;
   TC.ItemTemplate=myTemplate;
   TC.HeaderText=NameSubject; 
   TC.HeaderStyle.BackColor= ColorTranslator.FromHtml("#336699"); 
   //TC.ItemStyle.BackColor = ColorTranslator.FromHtml("#FFF778"); 
   TC.ItemStyle.CssClass="cn"; 
   TC.HeaderStyle.CssClass="cn";
   DataGrid1.Columns.Add(TC);
  }

添加打印Button:
public void AddButtonColum(string commandname,string text)
  {
   ButtonColumn BC=new ButtonColumn();
   BC.ButtonType=ButtonColumnType.PushButton;
   BC.CommandName=commandname;
   BC.Text=text;
   DataGrid1.Columns.Add(BC);
  }

添加LinkButton:
public void AddLinkButtonColum(string commandname,string text)
  {
   ButtonColumn BC=new ButtonColumn(); 
   BC.ButtonType=ButtonColumnType.LinkButton;
   BC.CommandName=commandname;
   BC.Text=text;
   DataGrid1.Columns.Add(BC); 

  }


添加HyperLink:
public void AddHyperLinkColum(string commandname,string text)
  {
   HyperLinkColumn HC=new HyperLinkColumn();
   HC.NavigateUrl="http://www.home";
   HC.Text=text;
   DataGrid1.Columns.Add(HC); 

  }

动态添加模板:

public DataSet getDataSet()
  {
   String _value;
   String _sql;
   string _wheresql="";
   string _fromtime,_totime;

   _value=ViewName.Text.Trim();
   DataSet ds=new DataSet();
   string strConnection=BRC.Library.Helper.ConfigHelper.ConfigCore.GetSysConfigValue("ConnectionString");
   SqlConnection cn=new SqlConnection(strConnection);

   _fromtime=FromTime.Text.Trim();
   _totime=ToTime.Text.Trim();
   if(_fromtime!="")
   {
    _wheresql =" and p.ApplyDate>='"+_fromtime+"'";       
   }
   if(_totime!="")
   {
    if(_wheresql=="")
    {
     _wheresql =" and p.ApplyDate<='"+_totime+"'";
    }
    else
    {
     _wheresql +=" and p.ApplyDate<='"+_totime+"'";
    }
   
   
   }
 
   AddTemplate("OrderID","序号");
   //AddTemplate("FormNO","表单号");
   switch(_value)
   {
    case "基本数据视图":
     AddTemplate("物料编号","物料编号");
     AddTemplate("中文描述","中文描述");
     AddTemplate("英文描述","英文描述");
     AddTemplate("物料类型","物料类型");
     AddTemplate("工厂编号","工厂编号");
     AddTemplate("基本单位","基本单位");
     AddTemplate("物料组","物料组");
     AddTemplate("产品组","产品组");
     AddTemplate("零件毛重","零件毛重");
     AddTemplate("零件净重","零件净重");
     AddButtonColum("print","打印");
     _sql="select a.MaterielCode as 物料编号 ,a.DescribeCN as 中文描述,a.DescribeEN as 英文描述,a.MaterielType as 物料类型,a.PlantCode as 工厂编号,";
     _sql+=" a.BaseUnit as 基本单位,a.MaterielGroup as 物料组,";
     _sql+=" a.Division as 产品组,a.GrossWeight as 零件毛重,a.NetWeight as 零件净重 ";
     _sql+=" from BW_basic_info a,BW_Form_info b,BW_proposer_info p where b.InFlow='0' and a.FormNO=b.FormNO and a.FormNO=p.FormNO "+_wheresql;
     break;
    case "采购视图":
     AddTemplate("物料编号","物料编号");
     AddTemplate("中文描述","中文描述");
     AddTemplate("英文描述","英文描述");
     AddTemplate("物料类型","物料类型");
     AddTemplate("工厂编号","工厂编号");
     AddTemplate("采购组","采购组");
     AddTemplate("配额管理","配额管理");
     _sql="select a.MaterielCode as 物料编号,a.DescribeCN as 中文描述,a.DescribeEN as 英文描述,";
     _sql+=" a.MaterielType as 物料类型,a.PlantCode as 工厂编号,c.PurGroup as 采购组,c.QuotaUsage as 配额管理 ";
     _sql+=" from BW_basic_info a,BW_Form_info b,BW_pur_view c,BW_proposer_info p where b.InFlow='0' and a.FormNO=b.FormNO and c.FormNO=b.FormNO and b.FormNO=p.FormNO "+_wheresql;
     break;
    case "质量视图":
     AddTemplate("物料编号","物料编号");
     AddTemplate("中文描述","中文描述");
     AddTemplate("英文描述","英文描述");
     AddTemplate("物料类型","物料类型");
     AddTemplate("工厂编号","工厂编号");
     AddTemplate("检验类型","检验类型");
     AddTemplate("跳检判定","跳检判定");
     AddButtonColum("print","打印");
     _sql="select a.MaterielCode as 物料编号,a.DescribeCN as 中文描述,a.DescribeEN as 英文描述,a.MaterielType as 物料类型 ,";
     _sql+=" a.PlantCode as 工厂编号,c.Inspection as 检验类型,c.AutomaticUD as 跳检判定 ";
     _sql+=" from BW_basic_info a,BW_Form_info b,BW_quality_view c,BW_proposer_info p where b.InFlow='0' and a.FormNO=b.FormNO and c.FormNO=b.FormNO and b.FormNO=p.FormNO "+_wheresql;
     break;
    case "仓储视图":
     AddTemplate("物料编号","物料编号");
     AddTemplate("中文描述","中文描述");
     AddTemplate("英文描述","英文描述");
     AddTemplate("物料类型","物料类型");
     AddTemplate("工厂编号","工厂编号");
     AddTemplate("WM库号","WM库号");
     AddTemplate("存储类型","存储类型");
     AddTemplate("库存地点","库存地点");
     AddTemplate("库存仓位","库存仓位");
     AddTemplate("托盘装载数量","托盘装载数量");
     AddTemplate("托盘单位","托盘单位");
     AddTemplate("存储单位类型","存储单位类型");
     AddButtonColum("print","打印");
     _sql="select a.MaterielCode as 物料编号,a.DescribeCN as 中文描述,a.DescribeEN as 英文描述,";
     _sql+=" a.MaterielType as 物料类型 ,a.PlantCode as 工厂编号,c.WarehouseNum as WM库号,c.StorageType as 存储类型,";
     _sql+=" c.StorageLocation as 库存地点, c.StorageBin as 库存仓位,c.LoadingEquipQty1 as 托盘装载数量,c.UnitOfMeasure1 as 托盘单位,c.StorageUnitType1 as 存储单位类型";
     _sql+=" from BW_basic_info a,BW_Form_info b,BW_storage_view c,BW_proposer_info p where b.InFlow='0' and a.FormNO=b.FormNO and c.FormNO=b.FormNO and b.FormNO=p.FormNO "+_wheresql;     
     break;
    case "MRP视图":
     AddTemplate("物料编号","物料编号");
     AddTemplate("中文描述","中文描述");
     AddTemplate("英文描述","英文描述");
     AddTemplate("物料类型","物料类型");
     AddTemplate("工厂编号","工厂编号");
     AddTemplate("MRP类型","MRP类型");
     AddTemplate("MRP控制者","MRP控制者");
     AddTemplate("批量数据","批量数据");
     AddTemplate("获得类型","获得类型");
     AddTemplate("批次确认","批次确认");
     AddTemplate("材料反冲","材料反冲");
     AddTemplate("计划边际码","计划边际码");
     AddTemplate("计划策略","计划策略");
     AddButtonColum("print","打印");
     _sql="select a.MaterielCode as 物料编号,a.DescribeCN as 中文描述,a.DescribeEN as 英文描述,";
     _sql+=" a.MaterielType as 物料类型 ,a.PlantCode as 工厂编号,c.MrpType as MRP类型,c.MRPController as MRP控制者,";
     _sql+=" c.LotSize as 批量数据,c.ProcurementType as 获得类型,c.BatchCheck as 批次确认,c.Backflush as 材料反冲,";
     _sql+=" c.SchedmarginKey as 计划边际码,c.PlanStrategyGroup as 计划策略 from BW_basic_info a,BW_Form_info b,BW_MRP_view c,BW_proposer_info p where b.InFlow='0' and a.FormNO=b.FormNO and c.FormNO=b.FormNO and b.FormNO=p.FormNO "+_wheresql;
     break;
    case "会计视图":
     AddTemplate("物料编号","物料编号");
     AddTemplate("中文描述","中文描述");
     AddTemplate("英文描述","英文描述");
     AddTemplate("物料类型","物料类型");
     AddTemplate("工厂编号","工厂编号");
     AddTemplate("估价类别","估价类别");
     AddTemplate("价格控制","价格控制");
     AddTemplate("标准价格","标准价格");
     AddTemplate("价格单位","价格单位");  
     AddTemplate("外购价格类型","外购价格类型");
     AddTemplate("外购估价类别","外购估价类别");
     AddTemplate("外购价格控制","外购价格控制");
     AddTemplate("外购标准价格","外购标准价格");
     AddTemplate("外购价格单位","外购价格单位");
     AddTemplate("自制价格类型","自制价格类型");
     AddTemplate("自制估价类别","自制估价类别");
     AddTemplate("自制价格控制","自制价格控制");
     AddTemplate("自制标准价格","自制标准价格");
     AddTemplate("自制价格单位","自制价格单位");
     //AddButtonColum("print","打印");
     _sql="select a.MaterielCode as 物料编号,a.DescribeCN as 中文描述,a.DescribeEN as 英文描述,";
     _sql+=" a.MaterielType as 物料类型 ,a.PlantCode as 工厂编号,c.Valuation_class as 估价类别,c.PriceControl as 价格控制,";
     _sql+=" c.StandardPrice as 标准价格,c.PriceUnit as 价格单位,c.OutType as 外购价格类型,c.OutClass as 外购估价类别,";
     _sql+=" c.OutControl as 外购价格控制,c.OutPrice as 外购标准价格,c.OutUnit as 外购价格单位,c.SelfType as 自制价格类型,";
     _sql+=" c.SelfClass as 自制估价类别,c.SelfControl as 自制价格控制,c.SelfPrice as 自制标准价格,c.SelfPriceUnit as 自制价格单位 ";
     _sql+=" from BW_basic_info a,BW_Form_info b,BW_bursar_view c ,BW_proposer_info p where b.InFlow='0' and a.FormNO=b.FormNO and c.FormNO=b.FormNO and b.FormNO=p.FormNO "+_wheresql;
     break;
    case "销售视图":
     AddTemplate("物料编号","物料编号");
     AddTemplate("中文描述","中文描述");
     AddTemplate("英文描述","英文描述");
     AddTemplate("物料类型","物料类型");
     AddTemplate("工厂编号","工厂编号");
     AddTemplate("销售组织","销售组织");
     AddTemplate("分销渠道","分销渠道");
     AddTemplate("装运仓库","装运仓库");
     AddTemplate("销售税码","销售税码");  
     AddTemplate("装运组","装运组");
     //AddButtonColum("print","打印");
     _sql="select a.MaterielCode as 物料编号,a.DescribeCN as 中文描述,a.DescribeEN as 英文描述,";
     _sql+=" a.MaterielType as 物料类型 ,a.PlantCode as 工厂编号,c.SalesOrg as 销售组织,c.DistrChannel as 分销渠道,";
     _sql+=" c.DeliveringPlant as 装运仓库,c.TaxClassification as 销售税码,c.LoadingGrp as 装运组 from BW_basic_info a,BW_Form_info b,BW_sales_view c,BW_proposer_info p where b.InFlow='0' and a.FormNO=b.FormNO and c.FormNO=b.FormNO and b.FormNO=p.FormNO "+_wheresql;
     break;
    default :
     _sql="";
     break;

   } 
   if(_sql!="")
   {
    SqlDataAdapter ad=new SqlDataAdapter(_sql,cn);
    ad.Fill(ds);
    return ds;
   }
   else
   {
    return null;
   }
    
  }

你可能感兴趣的:(datagrid)