Web Controls的小技巧:手动改变MultiPage的pageIndex
前段时间做了这样的一件事,把一个上传的内容放在了MultiPage控件里,再加上一个TabStrip,做了一个简单的在客户端可以“动态显示”不同页面的方法,这样做的好处是不必上传文件到服务器,而可以修改及很多的数据。
这里的导航是用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添加属性。
当然,最后的解决方法是比较完美的。
// 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 ;
}
{
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 + " ') " );
}
}
/\_/\
(=^o^=) Wu.Country@侠缘
(~)@(~) 一辈子,用心做一件事!
--------------------------------
学而不思则罔,思而不学则怠!
================================
posted on 2006-04-04 16:21 Wu.Country@侠缘 阅读(446) 评论(0) 编辑 收藏 举报