zoukankan      html  css  js  c++  java
  • Web Controls的小技巧:手动改变MultiPage的pageIndex

    前段时间做了这样的一件事,把一个上传的内容放在了MultiPage控件里,再加上一个TabStrip,做了一个简单的在客户端可以“动态显示”不同页面的方法,这样做的好处是不必上传文件到服务器,而可以修改及很多的数据。

    Multipage.JPG

    这里的导航是用TabStrip自动添加的,而现在又有一个麻烦的问题:就是要手动的添加一个导航:Back and Next!
    简单的想法:找到MultiPage在IE里的ID,然后找它的index,然后修改这个值!
    说的是很简单,然而做起来没那么容易:
    首先,用JS找它的ID,而这个ID是动态生成的,因此必须在服务器上生成这个ID然后再来处理!
    其次,这个控件不像HTML元素,它的很多属性与方法都不是透明的,你不知道它有哪些属性事方法可用!
    最后,不好调试!必须先用在后台生成脚本再来写脚本调试。还好,MS的J#测试器在这里给了我很大的帮助。

    这里的关键还是在MS的网站上找关于这个控件的客户端信息:你可以从这里找到这些相关的信息:
    http://msdn.microsoft.com/workshop/webcontrols/behaviors/library/multipage/multipage_ovw.asp?frame=true
    它给出了这些控件在客户端的手动代码编写方法,因此我们可以很好和自己写些简单的“控件”来管理类似MultiPage控件。
    于是我简单的做了一下,先写了两段用于控制PAGE的JS代码,然后为BUTTON添加属性。
    当然,最后的解决方法是比较完美的。

    // by Wu.Country
    //
    Last modify date: 2006-4-4
    //
    use for asp.net controls to manange the multipage selected index
    function  PrePage(i_objSender,i_objPage,i_objTab,i_objEnable) {
        
    var  m_tab     =  eval( " document.all. " + i_objTab);
        
    var  m_page     =  eval( " document.all. " + i_objPage);
        
    var  m_sender =  eval( " document.all. " + i_objSender);
        
    var  m_enable =  eval( " document.all. " + i_objEnable);    
        
    if (m_page.selectedIndex > 0 ) {
            m_page.selectedIndex
    -- ;
            m_tab.selectedIndex
    -- ;
        }

        
    if (m_page.selectedIndex == 0 ) {
            m_sender.disabled    
    =   true ;
        }
    else {
            m_enable.disabled    
    =   false ;
        }

        event.cancelBubble
    = true ;
        
    return   false ;
    }


    function  NextPage(i_objSender,i_objPage,i_objTab,i_objEnable) {
        
    var  m_tab     =  eval( " document.all. " + i_objTab);
        
    var  m_page     =  eval( " document.all. " + i_objPage);
        
    var  m_sender =  eval( " document.all. " + i_objSender);
        
    var  m_enable =  eval( " document.all. " + i_objEnable);
        m_enable.enable    
    =   true ;
        
    if (m_page.selectedIndex < m_page.numPages - 1 ) {
            m_page.selectedIndex
    ++ ;
            m_tab.selectedIndex
    ++ ;        
        }

        
    if (m_page.selectedIndex == m_page.numPages - 1 ) {
            m_sender.disabled    
    =   true ;
        }
    else {
            m_enable.disabled    
    =   false ;
        }

        event.cancelBubble
    = true ;
        
    return   false ;
    }


            private  void  Button4_PreRender(object sender, System.EventArgs e)
            
    {
                
    if ( ! IsPostBack)
                
    {
                    Button m_next        
    =  sender as Button;
                    string m_senderID    
    =  m_next.ClientID;
                    string m_pageID        
    =   this .MultiPage1.ClientID;
                    string m_tabID        
    =   this .TabStrip1.ClientID;
                    string m_enableID    
    =   this .Button_back.ClientID;
                    m_next.Attributes.Add(
    " onclick " , " return NextPage(' " + m_senderID + " ',' " + m_pageID + " ',' " + m_tabID + " ',' " + m_enableID + " ') " );
                }
            
            }



     

  • 相关阅读:
    【转】[C# 基础知识系列]专题七:泛型深入理解(一)
    【转】[C# 基础知识系列]专题六:泛型基础篇——为什么引入泛型
    【转】[C# 基础知识系列]专题五:当点击按钮时触发Click事件背后发生的事情
    【转】[C# 基础知识系列]专题四:事件揭秘
    【转】[C# 基础知识系列]专题三:如何用委托包装多个方法——委托链
    Day 47 Django
    Day 45 JavaScript Window
    Day 43,44 JavaScript
    Day 42 CSS Layout
    Day 41 CSS
  • 原文地址:https://www.cnblogs.com/WuCountry/p/366677.html
Copyright © 2011-2022 走看看