• [Asp.Net+C#]Datagrid使用技巧二(怎样让对动态创建的列进行排序)


    先发上来,以后再整理,这是我在最近工作中解决的问题。
    如果那为朋友有更好的方法,请发给我一下,小弟感谢。
    一、动态创建列函数

      private void DatagridDataBaind(){
       int i;
       string strTempValue;
       DataTable dtcom = (DataTable)Session["Source"];
       DataTable dtsub=(DataTable)Session["subSource"];
       Datagrid1.AllowSorting=true;
       strTempValue=Convert.ToString(Session["strTempValue"]).Trim();
       for(i=0;i<dtsub.Rows.Count;i++)
       {
        if(dtsub.Rows[i][1].ToString().Trim().Equals("Y"))
        {
         BoundColumn dgcA=new BoundColumn();
         dgcA.HeaderText="A卷,"+dtsub.Rows[i][0].ToString();
         dgcA.ItemStyle.HorizontalAlign=HorizontalAlign.Center;
         dgcA.DataField="S"+Convert.ToString(i+1)+"A";
         dgcA.HeaderStyle.HorizontalAlign=HorizontalAlign.Center;
         dgcA.HeaderStyle.Width=Unit.Pixel(60);
         Datagrid1.Columns.Add(dgcA);  

         BoundColumn dgcB=new BoundColumn();
         dgcB.HeaderText="B卷";
         dgcB.ItemStyle.HorizontalAlign=HorizontalAlign.Center;
         dgcB.DataField="S"+Convert.ToString(i+1)+"B";
         dgcB.HeaderStyle.HorizontalAlign=HorizontalAlign.Center;
         dgcB.HeaderStyle.Width=Unit.Pixel(60);
         Datagrid1.Columns.Add(dgcB); 

         BoundColumn dgc=new BoundColumn();
         dgc.HeaderText="综合";
         dgc.ItemStyle.HorizontalAlign=HorizontalAlign.Center;
         dgc.DataField="S"+Convert.ToString(i+1);
         dgc.HeaderStyle.HorizontalAlign=HorizontalAlign.Center;
         dgc.HeaderStyle.Width=Unit.Pixel(60);;
         Datagrid1.Columns.Add(dgc); 
        }
        else
        {
         BoundColumn dgc=new BoundColumn();
         dgc.HeaderText=dtsub.Rows[i][0].ToString();
         dgc.ItemStyle.HorizontalAlign=HorizontalAlign.Center;
         dgc.DataField="S"+Convert.ToString(i+1);
         dgc.HeaderStyle.HorizontalAlign=HorizontalAlign.Center;
         dgc.HeaderStyle.Width=Unit.Pixel(60);
         Datagrid1.Columns.Add(dgc);     
        }
       }
       BoundColumn dgc2=new BoundColumn();
       dgc2.HeaderText="总分";
       dgc2.ItemStyle.HorizontalAlign=HorizontalAlign.Center;
       dgc2.DataField="FullScore";
       dgc2.SortExpression="FullScore desc";
       dgc2.HeaderStyle.HorizontalAlign=HorizontalAlign.Center;
       dgc2.HeaderStyle.Width=Unit.Pixel(60);
       Datagrid1.Columns.Add(dgc2); 

       BoundColumn dgc1=new BoundColumn();
       dgc1.HeaderText="班级排名";
       dgc1.ItemStyle.HorizontalAlign=HorizontalAlign.Center;
       dgc1.DataField="orders";
       dgc1.SortExpression="orders";
       dgc1.HeaderStyle.HorizontalAlign=HorizontalAlign.Center;
       dgc1.HeaderStyle.Width=Unit.Pixel(60);
       Datagrid1.Columns.Add(dgc1);     
       if(strTempValue.Trim().Equals(""))
       {
        BoundColumn dgcGrade=new BoundColumn();
        dgcGrade.HeaderText="年级排名";
        dgcGrade.ItemStyle.HorizontalAlign=HorizontalAlign.Center;
        dgcGrade.DataField="gradeorders";
        dgcGrade.SortExpression="gradeorders";
        dgcGrade.HeaderStyle.HorizontalAlign=HorizontalAlign.Center;
        dgcGrade.HeaderStyle.Width=Unit.Pixel(60);
        Datagrid1.Columns.Add(dgcGrade);
       }

      }

    二、数据绑定函数
      private void DatagridDataBaind1(){
       DataTable dtcom = (DataTable)Session["Source"];
       Datagrid1.DataSource=dtcom.DefaultView;
       Datagrid1.DataBind();  
      }

    三、要调用的事件
       this.Datagrid1.ItemCreated += new System.Web.UI.WebControls.DataGridItemEventHandler(this.Datagrid1_ItemCreated);
       this.Datagrid1.SortCommand += new System.Web.UI.WebControls.DataGridSortCommandEventHandler(this.Datagrid1_SortCommand);
       this.Load += new System.EventHandler(this.Page_Load);
       this.Init += new System.EventHandler(this.ScoreOrderWebExe_Init);
    四、  排序
    private void Datagrid1_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
      {
     
       DataTable dtcom = (DataTable)Session["Source"];
       dtcom.DefaultView.Sort = e.SortExpression;
       Session["Source"]=dtcom;
       DatagridDataBaind1();  
      }
    五、装载动态生成的列
      private void ScoreOrderWebExe_Init(object sender, System.EventArgs e)
      {
       if(IsPostBack){
        DatagridDataBaind();
       }
      }

  • 相关阅读:
    [转]Delphi中进行延时的4种方法
    [转]delphi 删除动态数组的指定元素
    vue-transition-fade
    移动端list布局,左边固定,右边自适应
    移动端弹窗
    多行文字超出省略显示
    jsonp
    barba 页面渲染
    barba.js 优化页面跳转用户体验
    页面返回无刷新
  • 原文地址:https://www.cnblogs.com/JimZhang/p/226563.html
Copyright © 2020-2023  润新知