有个sql语句,查询结果只有1列, 现在需要显示n列, 后面的n-1列为模板列, 每列里面放一个checkbox.
请高手指点.

解决方案 »

  1.   

    http://www.putfly.com/show.aspx?id=333&cid=10
      

  2.   

    /// <summary>
    /// 实现ITemplate接口,用来打印
    /// </summary>
    public class ColumnTemplate : ITemplate
    {
    public void InstantiateIn(Control container)
    {
    LinkButton lb = new LinkButton();
    lb.Text = "打印";
    lb.CommandName = "Print";
    container.Controls.Add(lb);
    }
    } /// <summary>
    /// 实现ITemplate接口,用来导出
    /// </summary>
    public class ColumnTemplateExport : ITemplate
    {
    public void InstantiateIn(Control container)
    {
    LinkButton lb = new LinkButton();
    lb.Text = "导出";
    lb.CommandName = "Export";
    container.Controls.Add(lb);
    }
    }
      

  3.   

    /// <summary>
    /// 清空GRID的COLUMN
    /// </summary>
    /// <param name="vardg"></param>
    private static void RefreshGrid(DataGrid vardg)
    {
    vardg.Columns.Clear();

    BoundColumn dc = new BoundColumn();
    dc.HeaderText = "ID";
    dc.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
    dc.DataField = "ID";
    dc.Visible = false;
    dc.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
    vardg.Columns.AddAt(0,dc); dc = new BoundColumn();
    dc.HeaderText = "序号";
    dc.HeaderStyle.Wrap = false;
    dc.HeaderStyle.Width = 30;
    dc.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
    dc.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
    vardg.Columns.AddAt(1,dc);
    } /// <summary>
    /// 创建按专家打印的GRID
    /// </summary>
    /// <param name="vardg"></param>
    private static void CreateExpertDataGrid(DataGrid vardg)
    {
    RefreshGrid(vardg); BoundColumn dc = new BoundColumn();
    dc.HeaderText = "专家姓名";
    dc.HeaderStyle.Wrap = false;
    dc.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
    dc.DataField = "EXPERT_NAME";
    dc.SortExpression = "EXPERT_NAME";
    dc.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
    vardg.Columns.AddAt(2,dc);

    dc = new BoundColumn();
    dc.HeaderText = "所属医院";
    dc.HeaderStyle.Wrap = false;
    dc.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
    dc.DataField = "HOSPITAL";
    dc.SortExpression = "HOSPITAL";
    vardg.Columns.AddAt(3,dc);

    TemplateColumn  tc = new TemplateColumn();
    tc.ItemTemplate = new ColumnTemplate();
    tc.HeaderText = "打印";
    dc.HeaderStyle.Wrap = false;
    tc.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
    tc.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
    tc.HeaderStyle.Width = 30;
    vardg.Columns.AddAt(4,tc);

    tc = new TemplateColumn();
    tc.ItemTemplate = new ColumnTemplateExport();
    tc.HeaderText = "导出";
    dc.HeaderStyle.Wrap = false;
    tc.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
    tc.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
    tc.HeaderStyle.Width = 30;
    vardg.Columns.AddAt(5,tc);
    }
      

  4.   

    brightheroes(闭关|那一剑的风情): 调试过没有呢?
      

  5.   

    好像还有个问题, 他把列加到datagrid的最前面了, 我前面已有的字段调到后面去了, 怎么把动态加的列调到后面去呢???
      

  6.   

    怎么把动态加的列调到后面去呢???
    >>>
    看看上面的代码里面
    有很多类似于这样的语句
    vardg.Columns.AddAt(5,tc);
    5就表示索引
    所以说,这个是你可以控制的,你让它插入第几列就第几列