首页 IP地址查询 | Alexa排名查询 | 手机归属地查询
设为首页 收藏本站
  • 网络编程网络编程
  • 软件编程软件编程
  • 数据库技术数据库技术
  • 编程学院
  • 业界资讯 业界资讯
  • 源码中心源码中心
  • 会员中心会员中心
  • 页面导航: 首页C#.net控件应用 → datagrid同时具有分页和排序功能及注意点

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

    发布:匿名 发布日期:2006-09-28 字体:[增加 减小] 类型:转载

        当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>");
      }


    Tags: datagrid
    为配合网络严查,文章评论将关闭敬请谅解.
    同 类 文 章
    最 近 更 新
    热 点 排 行