• asp.net 2.0 gridview 分页 跳转 警告窗口 注册事件


    参考页面:
    http://odetocode.com/Blogs/scott/archive/2006/03/21/3153.aspx
    http://odetocode.com/Blogs/scott/archive/2006/03/20/3145.aspx
    http://recordsome.blogsome.com/2006/05/30 

    问题描述:EnableEventValidation="true"
      
    Event validation is a feature designed to help prevent injection attacks (of course it can't prevent attacks all by itself).
       如果我们往服务器端生成的代码加入了客户端生成的数据,如果参考页面中提出的,下拉菜单的问题。
    这样会提示出错信息
     
    我是在做GridView的分页时,出现的问题。我把代码贴出来,大家看看。
    <asp:GridView ID="gvDB" runat="server" CssSelectorClass="PrettyGridView" SkinID="GridView"
            OnPageIndexChanging
    ="gvDB_PageIndexChanging">   //这里用到一个CSS适配器
            
    <EmptyDataTemplate>
                
    <div align="center">
                    没有相关资源
    </div>
            
    </EmptyDataTemplate>
            
    <Columns>
                
    <asp:TemplateField HeaderText="状态" ItemStyle-Width="35px">
                    
    <ItemTemplate>
                        
    <%# CheckUserRight(Eval("RS_ID").ToString())%>
                    
    </ItemTemplate>
                    
    <ItemStyle BorderColor="#BFCCE1" HorizontalAlign="Center" Width="30px" />
                
    </asp:TemplateField>
                
    <asp:TemplateField HeaderText="资源名称">
                    
    <ItemTemplate>
                        
    <target="_blank" href="SingleSearch.aspx?rsid=<%# Eval("RS_ID")%>" title="<%#DataBinder.Eval(Container.DataItem, "RS_Intro")%>">
                            
    <%#DataBinder.Eval(Container.DataItem, "RS_Name")%></a>
                    
    </ItemTemplate>
                    
    <ItemStyle BorderColor="#BFCCE1" />
                
    </asp:TemplateField>
            
    </Columns>
        
    </asp:GridView>

    这是.SKIN文件下的设置
    <asp:GridView SkinID="GridView" Runat="server" 
        CellPadding
    ="3" 
        GridLines
    ="None"
        BorderStyle
    ="solid" 
        BorderWidth
    ="2px" 
        BorderColor
    ="#465239"
        PagerSettings-Mode
    ="NextPreviousFirstLast"
        AllowPaging
    ="True" 
        PageSize
    ="12" 
        Width
    ="100%"
        AutoGenerateColumns
    ="False">
      
    <PagerSettings PreviousPageImageUrl="~/images/resBrowser/button_previous.gif" NextPageImageUrl="~/images/resBrowser/button_next.gif"
                            FirstPageImageUrl
    ="~/images/resBrowser/button_first.gif" LastPageImageUrl="~/images/resBrowser/button_last.gif"
                            FirstPageText
    ="第一页" LastPageText="最后一页" Mode="NextPreviousFirstLast"
                            NextPageText
    ="下一页" PreviousPageText="前一页" />
        
    <PagerStyle HorizontalAlign="Right" BackColor="#F9FAFD" ForeColor="#0099FF" Height="10px"
            BorderStyle
    ="Solid" BorderWidth="1px" BorderColor="#BFCEE1" />
    </asp:GridView>

    这是加到GridView后面的分页代码
    <div style="text-align: center; font-size:small;"> 
    <%  if (lblcurPage.Text != "1"
        {  
    %> 
    <input type="image" src="../images/resBrowser/button_first.gif" alt="首页" 
       onclick
    ="javascript:__doPostBack('ctl00$MainContent$gvDB','Page$First')"  />
    <input type="image" src="../images/resBrowser/button_previous.gif" alt="前一页"
    onclick
    ="javascript:__doPostBack('ctl00$MainContent$gvDB','Page$Prev')"  /> 
    <% } %> 
    <asp:Label ID="lblcurPage" runat="server" Text=''></asp:Label>页/共<asp:Label 
    ID="lblPageCount" runat="server" Text=''></asp:Label>
    <%  if (lblcurPage.Text != lblPageCount.Text) 
        {                   
    %> 
    <input type="image" src="../images/resBrowser/button_next.gif" alt="后一页"
      onclick
    ="javascript:__doPostBack('ctl00$MainContent$gvDB','Page$Next')"  />
    <input type="image" src="../images/resBrowser/button_last.gif" alt="尾页" 
      onclick
    ="javascript:__doPostBack('ctl00$MainContent$gvDB','Page$Last')"  />
    <% } %>  
    跳转到第
    <asp:textbox id="txtNewPageIndex" runat="server" width="20px" text='<%=gvDB.PageIndex+1 %>' />页 
    <href="#" onclick="GoToPage()">跳转</a>
     
    </div>
    //javascript代码
    function GoToPage()
    {
        var curPage=$get('ctl00_MainContent_lblcurPage').innerHTML;
        var newPage=$get('ctl00_MainContent_txtNewPageIndex').value;
       if(curPage==newPage)
       {
           return;
       }
       __doPostBack('ctl00$MainContent$gvDB','Page$First');
    }  

    解决方案:
    在.CS页面中加了一个事件注册处理:
         protected override void Render(HtmlTextWriter writer)
            {
                ClientScript.RegisterForEventValidation(gvDB.UniqueID, "Page$First");
                base.Render(writer);
            }
    关于分页的做法,网上有很多做法。
    我的任务是在原来的基础上加上分页的功能,这次改动不算太多。
    欢迎大家讨论。
  • 相关阅读:
    模块化
    JavaScript基础-----(DOM操作的内容)
    JavaScript基础----(事件,BOM和DOM)
    JavaScript基础------(数组)
    JavaScript基础-----(函数,对象<String Math Date>)
    JavaScript基础-----(组成,数据类型,循环)
    CSS基础-----(css定位)
    CSS基础-----(选择器)
    CSS基础----(声明方式以及优先级)
    纯html注册页面
  • 原文地址:https://www.cnblogs.com/ajaxleoxu/p/794426.html
Copyright © 2020-2023  润新知