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添加属性。
当然,最后的解决方法是比较完美的。

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

ExpandedSubBlockStart.gifContractedSubBlock.gif    
if (m_page.selectedIndex == 0 ) dot.gif {
InBlock.gif        m_sender.disabled    
=   true ;
ExpandedSubBlockStart.gifContractedSubBlock.gif    }
else dot.gif {
InBlock.gif        m_enable.disabled    
=   false ;
ExpandedSubBlockEnd.gif    }

InBlock.gif    event.cancelBubble
= true ;
InBlock.gif    
return   false ;
ExpandedBlockEnd.gif}

None.gif
ExpandedBlockStart.gifContractedBlock.gif
function  NextPage(i_objSender,i_objPage,i_objTab,i_objEnable) dot.gif {
InBlock.gif    
var  m_tab     =  eval( " document.all. " + i_objTab);
InBlock.gif    
var  m_page     =  eval( " document.all. " + i_objPage);
InBlock.gif    
var  m_sender =  eval( " document.all. " + i_objSender);
InBlock.gif    
var  m_enable =  eval( " document.all. " + i_objEnable);
InBlock.gif    m_enable.enable    
=   true ;
ExpandedSubBlockStart.gifContractedSubBlock.gif    
if (m_page.selectedIndex < m_page.numPages - 1 ) dot.gif {
InBlock.gif        m_page.selectedIndex
++ ;
InBlock.gif        m_tab.selectedIndex
++ ;        
ExpandedSubBlockEnd.gif    }

ExpandedSubBlockStart.gifContractedSubBlock.gif    
if (m_page.selectedIndex == m_page.numPages - 1 ) dot.gif {
InBlock.gif        m_sender.disabled    
=   true ;
ExpandedSubBlockStart.gifContractedSubBlock.gif    }
else dot.gif {
InBlock.gif        m_enable.disabled    
=   false ;
ExpandedSubBlockEnd.gif    }

InBlock.gif    event.cancelBubble
= true ;
InBlock.gif    
return   false ;
ExpandedBlockEnd.gif}

None.gif

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



 

转载于:https://www.cnblogs.com/WuCountry/archive/2006/04/04/366677.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值