zoukankan
html css js c++ java
IPostBackDataHandler实现CollapablePanel控件的状态保持
在CollapablePanel控件的设计过程中,遇到了这样一个问题:当某一项面板展开时,执行页面后,控件中面板的状态将恢复到原先的状态,这样是不是特感到郁闷。
查了一下MSDN,从中知道了可以通过实现IPostBackDataHandler来实现。
下面分别给出实现代码:
1、在Page_Init将控件注册为需要回发处理的控件。
protected
override
void
OnInit(EventArgs e)
{
base
.OnInit(e);
//
遍列每一个CoolPanel,初始其状态
foreach
(CollPanel p
in
m_Panels)
{
p.i_Expanded
=
m_ExpandSolePanel
?
false
: p.Expanded;
}
if
(m_ExpandSolePanel)
{
m_Panels[
0
].i_Expanded
=
true
;
}
//
注册控件
if
(Page
!=
null
)
{
Page.RegisterRequiresPostBack(
this
);
}
}
2、在OnPreRender中注册一个HtmlInputHidden控件,并将子面板集合的状态写入。
protected
override
void
OnPreRender(EventArgs e)
{
base
.OnPreRender(e);
string
s
=
""
;
foreach
(CollPanel p
in
m_Panels)
{
s
+=
(p.i_Expanded.ToString()
==
"
True
"
?
"
1
"
:
"
0
"
)
+
"
,
"
;
}
if
(Page
!=
null
)
{
Page.RegisterHiddenField(
this
.ClientID
+
"
_state
"
, s);
}
}
3、最后,通过LoadPostData从客户端获得状态
public
bool
LoadPostData(String postDataKey, NameValueCollection values)
{
//
从客户端获得每个Panel的状态
string
value
=
values[
this
.ClientID
+
"
_state
"
];
if
(value
!=
null
)
{
string
[] s
=
value.Split(
'
,
'
);
for
(
int
i
=
0
; i
<
m_Panels.Count; i
++
)
{
m_Panels[i].i_Expanded
=
s[i]
==
"
1
"
?
true
:
false
;
}
}
return
false
;
}
[ 完 ]
呵呵,是不是很简单哦!!
查看全文
相关阅读:
最长k可重区间集问题【网络流24题】
分配问题 【网络流24题】
航空路线问题 【网络流24题】
最长不下降子序列问题 【网络流24题】
数组去重
项目选题报告(团队)
关于DLL的创建与使用简单描述(C++、C#)
原型设计(结对第一次)
团队展示(团队)
第二次作业——个人项目实战
原文地址:https://www.cnblogs.com/faib/p/701637.html
最新文章
0812博文——闭包、装饰器和迭代器
0806博文——初识时间回溯算法
Python容器类型的过滤和解析技巧
求解前K个高频元素——sorted()方法和lambda匿名函数的应用
罗马数字转整数的算法
旋转数字的解法
Spider--实战--selenium_12306
Spider--补充--selenium的使用
Pandas_工资集处理
Pandas_基础_全
热门文章
Numpy_02
Pandas_数据读取与存储数据(全面但不精炼)
Pandas_数据读取与存储数据(精炼)
Pandas_数据清洗与整理_全
Pandas_分组与聚合
Pandas_VBA_数据清洗对比
家园/星际转移问题 【网络流24题】
圆桌问题 【网络流24题】
深海机器人问题 【网络流24题】
P4013 数字梯形问题 【网络流24题】
Copyright © 2011-2022 走看看