从页面回传等方面。谢谢

解决方案 »

  1.   

    url分页:分页代码在Page_load中处理,每次都是打开一个新网页,可以用IE的后退前进功能。
    PostBack分页:分页代码在按钮事件函数中处理,每次都是同一个网页,无法使用IE的后退前进功能。
      

  2.   

    如果你的页面上除了datagrid还有其他控件,这时候所谓url方式分页就丢失了页面上所有其它控件的状态。这种组件编程方法是“恶俗”的,霸道的。
      

  3.   

    谢谢,我打开postback的页面的源文件看了一下,
    <a class="mypager" href="javascript:__doPostBack('pager','7')">
    __doPostBack是点击到第几页时要执行的函数,但这个函数里好象没有换页的逻辑,我搞不懂postback后要执行的代码是哪一段,能否告诉我。 <body>
    <h2 align="center">AspNetPager分页示例之DataGrid(PostBack分页)</h2>
    <h5 style="COLOR: red" align="center"><A href="datagrid_url.aspx">Url分页</A></h5>
    <form name="datagrid" method="post" action="datagrid.aspx" id="datagrid">
    <input type="hidden" name="__EVENTTARGET" value="" />
    <input type="hidden" name="__EVENTARGUMENT" value="" />
    <input type="hidden" name="__VIEWSTATE" value="dDw3MjM5OTc0MTk7dDw7bDxpPDE+Oz47bDx0PDtsPGk8MT47aTwzPjs+O2w8dDxAMDxwPHA8bDxQYWdlQ291bnQ7XyFJdGVtQ291bnQ7XyFEYXRhU291cmNlSXRlbUNvdW50O0RhdGFLZXlzOz47bDxpPDE+O2k8ND47aTw0PjtsPD47Pj47Pjs7Ozs7Ozs7Ozs+O2w8aTwwPjs+O2w8dDw7bDxpPDE+O2k8Mj47aTwzPjtpPDQ+Oz47bDx0PDtsPGk8MD47aTwxPjtpPDI+O2k8Mz47PjtsPHQ8cDxwPGw8VGV4dDs+O2w8NjE7Pj47Pjs7Pjt0PHA8cDxsPFRleHQ7PjtsPOi1sOWbnue7v+iJsuWutuWbre+8iOS4i++8iTs+Pjs+Ozs+O3Q8cDxwPGw8VGV4dDs+O2w844CK5bu25a6J5pel5oql44CLOz4+Oz47Oz47dDxwPHA8bDxUZXh0Oz47bDwyMDAx5bm0MTLmnIg05pelOz4+Oz47Oz47Pj47dDw7bDxpPDA+O2k8MT47aTwyPjtpPDM+Oz47bDx0PHA8cDxsPFRleHQ7PjtsPDYyOz4+Oz47Oz47dDxwPHA8bDxUZXh0Oz47bDzotbDlm57nu7/oibLlrrblm63vvIjkuIrvvIk7Pj47Pjs7Pjt0PHA8cDxsPFRleHQ7PjtsPOOAiuW7tuWuieaXpeaKpeOAizs+Pjs+Ozs+O3Q8cDxwPGw8VGV4dDs+O2w8MjAwMeW5tDEy5pyINOaXpTs+Pjs+Ozs+Oz4+O3Q8O2w8aTwwPjtpPDE+O2k8Mj47aTwzPjs+O2w8dDxwPHA8bDxUZXh0Oz47bDw1ODs+Pjs+Ozs+O3Q8cDxwPGw8VGV4dDs+O2w856eL6aOO5YeJICDpgKDmnpflv5k7Pj47Pjs7Pjt0PHA8cDxsPFRleHQ7PjtsPOOAiuW7tuWuieaXpeaKpeOAizs+Pjs+Ozs+O3Q8cDxwPGw8VGV4dDs+O2w8MjAwMeW5tDEw5pyIMjXml6U7Pj47Pjs7Pjs+Pjt0PDtsPGk8MD47aTwxPjtpPDI+O2k8Mz47PjtsPHQ8cDxwPGw8VGV4dDs+O2w8NTk7Pj47Pjs7Pjt0PHA8cDxsPFRleHQ7PjtsPOaWsOWNjuekvumpu+WkluiusOiAhemHh+iuv+WbouWcqOWQtOaXl+mHh+iuv+WxseW3neengOe+juW3peeoi+W7uuiuvjs+Pjs+Ozs+O3Q8cDxwPGw8VGV4dDs+O2w844CK5bu25a6J5pel5oql44CLOz4+Oz47Oz47dDxwPHA8bDxUZXh0Oz47bDwyMDAx5bm0MTDmnIgyNeaXpTs+Pjs+Ozs+Oz4+Oz4+Oz4+O3Q8cDxwPGw8Q3VzdG9tSW5mb1RleHQ7UmVjb3JkY291bnQ7PjtsPOiusOW9leaAu+aVsO+8mlw8Zm9udCBjb2xvcj0iYmx1ZSJcPlw8Ylw+MjcwXDwvYlw+XDwvZm9udFw+IOaAu+mhteaVsO+8mlw8Zm9udCBjb2xvcj0iYmx1ZSJcPlw8Ylw+NjhcPC9iXD5cPC9mb250XD4g5b2T5YmN6aG177yaXDxmb250IGNvbG9yPSJyZWQiXD5cPGJcPjFcPC9iXD5cPC9mb250XD47aTwyNzA+Oz4+Oz47Oz47Pj47Pj47PnS7tFgM9PlY1u8Xz8pK0Ml04LaP" /><script language="javascript" type="text/javascript">
    <!--
    function __doPostBack(eventTarget, eventArgument) {
    var theform;
    if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) {
    theform = document.datagrid;
    }
    else {
    theform = document.forms["datagrid"];
    }
    theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
    theform.__EVENTARGUMENT.value = eventArgument;
    theform.submit();
    }
    // -->
    </script>
    <script language="Javascript">function doCheck(el){var r=new RegExp("^\\s*(\\d+)\\s*$");if(r.test(el.value)){if(RegExp.$1<1||RegExp.$1>68){alert("页数必须介于1和68之间!");document.all['pager_input'].select();return false;}return true;}alert("输入的页索引无效!");document.all['pager_input'].select();return false;}</script> <script language="javascript" > <!-- 
    function BuildUrlString(key,value){ var loc=window.location.search.substring(1); var params=loc.split("&"); if(params.length<=1||(params.length==2&&params[0].toLowerCase()==key)) return location.pathname+"?"+key+"="+value; var newparam=""; var flag=false; for(i=0;i<params.length;i++){ if(params[i].split("=")[0].toLowerCase()==key.toLowerCase()){ params[i]=key+"="+value; flag=true; break; } } for(i=0;i<params.length;i++){ newparam+=params[i]+"&"; } if(flag) newparam=newparam.substring(0,newparam.length-1); else newparam+=key+"="+value; return location.pathname+"?"+newparam; } 
    //--> </script>
    <table cellspacing="0" cellpadding="4" align="Center" rules="all" border="1" id="DataGrid1" style="font-size:14px;width:880px;border-collapse:collapse;">
    <tr nowrap="nowrap" align="Center" style="background-color:#66CCFF;font-weight:bold;">
    <td nowrap="nowrap" style="width:5%;">编号</td><td nowrap="nowrap" style="width:50%;">新闻标题</td><td nowrap="nowrap" style="width:20%;">新闻来源</td><td nowrap="nowrap" style="width:15%;">发布日期</td><td nowrap="nowrap" style="width:10%;">编辑命令</td>
    </tr><tr style="background-color:Ivory;">
    <td nowrap="nowrap">61</td><td>走回绿色家园(下)</td><td>《延安日报》</td><td nowrap="nowrap">2001年12月4日</td><td nowrap="nowrap"><a href="javascript:__doPostBack('DataGrid1$_ctl2$_ctl0','')">编辑</a></td>
    </tr><tr style="background-color:#EAEAEA;">
    <td nowrap="nowrap">62</td><td>走回绿色家园(上)</td><td>《延安日报》</td><td nowrap="nowrap">2001年12月4日</td><td nowrap="nowrap"><a href="javascript:__doPostBack('DataGrid1$_ctl3$_ctl0','')">编辑</a></td>
    </tr><tr style="background-color:Ivory;">
    <td nowrap="nowrap">58</td><td>秋风凉  造林忙</td><td>《延安日报》</td><td nowrap="nowrap">2001年10月25日</td><td nowrap="nowrap"><a href="javascript:__doPostBack('DataGrid1$_ctl4$_ctl0','')">编辑</a></td>
    </tr><tr style="background-color:#EAEAEA;">
    <td nowrap="nowrap">59</td><td>新华社驻外记者采访团在吴旗采访山川秀美工程建设</td><td>《延安日报》</td><td nowrap="nowrap">2001年10月25日</td><td nowrap="nowrap"><a href="javascript:__doPostBack('DataGrid1$_ctl5$_ctl0','')">编辑</a></td>
    </tr>
    </table>
    <table cellSpacing="0" cellPadding="0" width="864" align="center" border="0" style="WIDTH: 864px; HEIGHT: 46px">
    <TBODY>
    <tr>
    <td width="100%">

    <!------------------------------ AspNetPager V4.0 Start ------------------------------>
    <!-------------------- Copyright:2003 Webdiyer(www.webdiyer.com) --------------------->
    <div id="pager" class="mypager" align="Right" style="height:27px;width:100%;">
    <table width="100%" border="0" cellpadding="0" cellspacing="0" style="height:27px;">
    <tr>
    <td class="mypager" valign="bottom" align="left" nowrap="true" style="width:40%;">记录总数:<font color="blue"><b>270</b></font> 总页数:<font color="blue"><b>68</b></font> 当前页:<font color="red"><b>1</b></font></td><td valign="bottom" align="right" nowrap="true" class="mypager" style="width:60%;"><a disabled="true"><font face="webdings">9</font></a><a disabled="true"><font face="webdings">3</font></a><font style="font-weight:Bold;color:red;">[1]</font><a class="mypager" href="javascript:__doPostBack('pager','2')">[2]</a><a class="mypager" href="javascript:__doPostBack('pager','3')">[3]</a><a class="mypager" href="javascript:__doPostBack('pager','4')">[4]</a><a class="mypager" href="javascript:__doPostBack('pager','5')">[5]</a><a class="mypager" href="javascript:__doPostBack('pager','6')">[6]</a><a class="mypager" href="javascript:__doPostBack('pager','7')">[7]</a><a class="mypager" href="javascript:__doPostBack('pager','8')">[8]</a><a class="mypager" href="javascript:__doPostBack('pager','9')">[9]</a><a class="mypager" href="javascript:__doPostBack('pager','10')">[10]</a><a class="mypager" href="javascript:__doPostBack('pager','11')">...</a><span style="width:0px;"></span><a class="mypager" href="javascript:__doPostBack('pager','2')"><font face="webdings">4</font></a><a class="mypager" href="javascript:__doPostBack('pager','68')"><font face="webdings">:</font></a>&nbsp;&nbsp;&nbsp;&nbsp;第<input type="text" value name="pager_input" onkeydown="if(event.keyCode==13){if(doCheck(document.all['pager_input']))__doPostBack('pager',document.all['pager_input'].value);else{event.returnValue=false;}}" style="width:30px;border:1px #0000FF solid;text-align:center" />页<input type="Submit" name="pager" value="go" onclick="return doCheck(document.all['pager_input'])" style="border:1px solid #000066;height:20px;width:30px" /></td>
    </tr>
    </table>
    </div>
    <!------------------------------- AspNetPager V4.0 End -------------------------------->
    </form>
    </TD></TR></TBODY></TABLE>
    </body>
    </HTML>
      

  4.   

    无论用哪种方式,换页时都 会把当前页回传到web服务器吗?
    url分页:分页代码在Page_load中处理,每次都是打开一个新网页,可以用IE的后退前进功能。
    PostBack分页:分页代码在按钮事件函数中处理,每次都是同一个网页,无法使用IE的后退前进功能。
    是不是postback时别的控件不变,只改变datagrid控件呀?
      

  5.   

    请帮忙解释一下postback模式的运行机制,因为之前没做过web开发,一上来就学asp.net开发,所以有些问题弄不明白,借了本书也没查找,或者告诉我从哪里可以查到这些知识。
      

  6.   

    postback时所有控件的状态都不变。但是id为pager的组件会收到一个提交事件,他的参数是页号(string类型的)。
      

  7.   

    谢谢,我打开postback的页面的源文件看了一下
    ---------------------------------------------------------
    客户端浏览器上的所谓“源文件”可不是asp.net页面的源文件,这个你要搞清楚。