欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

DataGrid同时具有分页和排序功能及注意点

程序员文章站 2023-08-14 16:14:27
    当datagrid同时具有分页和排序功能时应注意在重新绑定数据源时,mydatagrid.currentpageindex=0;下面给...

    当datagrid同时具有分页和排序功能时应注意在重新绑定数据源时,mydatagrid.currentpageindex=0;
下面给实现以上功能的原码,也就不多缀了aspx中包含有datagrid和控制其数据源变化的dropdownlist
datagrid代码
  <asp:datagrid id="mydatagrid" runat="server" bordercolor="#cccccc" font-size="100%" horizontalalign="center"
            autogeneratecolumns="false" ondeletecommand="mydatagrid_delete" onsortcommand="sort_grid" onpageindexchanged="mydatagrid_pageindexchanged"
            datakeyfield="acc_no" pagerstyle-position="bottom" pagerstyle-horizontalalign="center" pagerstyle-mode="nextprev"
            pagesize="10" allowsorting="true" allowpaging="true" cellpadding="4" width="100%">
            <alternatingitemstyle backcolor="#e9e9e6"></alternatingitemstyle>
            <headerstyle font-bold="true" wrap="false" forecolor="white" backcolor="#999999"></headerstyle>
            <columns>
             <asp:buttoncolumn text="口" commandname="delete"></asp:buttoncolumn>
             <asp:boundcolumn datafield="no" sortexpression="no" readonly="true" headertext="序号"></asp:boundcolumn>
             <asp:boundcolumn datafield="id" sortexpression="id" headertext="id"></asp:boundcolumn>
             <asp:boundcolumn datafield="name" sortexpression="name" headertext="名称"></asp:boundcolumn>
             <asp:boundcolumn datafield="c_name" sortexpression="c_name" headertext="各科名称"></asp:boundcolumn>
             <asp:boundcolumn datafield="flg" sortexpression="flg" headertext="项目"></asp:boundcolumn>
            </columns>
            <pagerstyle nextpagetext="下10件" prevpagetext="返回" horizontalalign="center"></pagerstyle>
           </asp:datagrid>


dropdownlist代码
<asp:dropdownlist id="ddlwk" runat="server" autopostback="true" enabled="false">
               <asp:listitem value="0">东京</asp:listitem>
               <asp:listitem value="3">九州</asp:listitem>
               <asp:listitem value="8">北海道</asp:listitem>
               <asp:listitem value="9">四国</asp:listitem>
              </asp:dropdownlist>

 

aspx.cs文件代码核心如下:
private void page_load(object sender, system.eventargs e)
  {
   if(!ispostback)
   {
       session["wp"] ="0";
       ddlwk_gets();
       bindgrid();
   } 
  }
  private void ddlwk_gets()
  {
   switch (session["wp"].tostring())
   {
    case "0":ddlwk.selectedindex=0;
     break;
    case "3":ddlwk.selectedindex=1;
     break;
    case "8":ddlwk.selectedindex=2;
     break;
    case "9":ddlwk.selectedindex=3;
     break;
    default:ddlwk.selectedindex=0;
     break;
   }
  }
  protected void bindgrid()
  {
   mydatagrid.datasource=getdata().tables["vco"].defaultview;
   mydatagrid.databind();
   //count.text=mydatagrid.columns.count.tostring();
  }

  /// <summary>
  /// 返回data
  /// </summary>
  ///<returns></returns>
  private dataset getdata()
  {
   string strconn=(string) ((namevaluecollection) context.getconfig("system.web/database"))["strconn"];
   using (sqlconnection conn = new sqlconnection(strconn))
   {
    sqlcommand cmd = new sqlcommand("sp_c",conn);
    cmd.commandtype=commandtype.storedprocedure;
    cmd.parameters.add("@place",sqldbtype.varchar,2);
    cmd.parameters["@place"].value=session["wp"].tostring();
    conn.open();

    sqldataadapter da = new sqldataadapter();
    da.selectcommand=cmd;
    dataset ds=new dataset();
    da.fill(ds,"vco");
    count.text="ヒット:"+ds.tables["vco"].rows.count.tostring()+"件";
    return ds;
   }

  }
  /// <summary>
  ///从dataset中除一
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  protected void mydatagrid_delete(object sender, datagridcommandeventargs e)
  {
    string strid=mydatagrid.datakeys[(int)e.item.itemindex].tostring();
    //删除操作
  }
  /// <summary>
  /// 分页操作
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  protected void mydatagrid_pageindexchanged(object source, datagridpagechangedeventargs e)
  {
   mydatagrid.currentpageindex=e.newpageindex;
   bindgrid();
  }
  /// <summary>
  /// 排序
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  protected void sort_grid(object sender, datagridsortcommandeventargs e)
  {
   dataview dv= new dataview(getdata().tables["vco"]);
   dv.sort= e.sortexpression.tostring();
   mydatagrid.datasource=dv;
   mydatagrid.databind();
  }

  #region web   override protected void oninit(eventargs e)
  {
   //   //
   initializecomponent();
   base.oninit(e);
  }

  /// <summary>  /// </summary>
  private void initializecomponent()
  {   
   this.ddlwk.selectedindexchanged += new system.eventhandler(this.ddlwk_selectedindexchanged);
   this.load += new system.eventhandler(this.page_load);

  }
  #endregion

  private void ddlwk_selectedindexchanged(object sender, system.eventargs e)
  {
   session["wp"]=ddlwk.selectedvalue;
   mydatagrid.currentpageindex=0;//没有这一句,当该页码超出其他数据源的范围时会出错
   bindgrid();
   response.write( "<script language='javascript'>parent.menuframe.location.reload();</script>");

  }