
2008年7月8日
现用vs2005做的项目,需要用到TreeView来处理一些分级数据,并能允许同时选中多个节点(要求选中父节点,那么子节点也相应的选中),即要用TreeView的ShowCheckBox属性。但在使用时发现,在选中复选框时不会引起回发事件,于是一顿猛Google。看到使用__doPostBack和后台注册onclick事件可以解决此问题,用上后却一直报__doPostBack()‘缺少对象’错误,在网上又搜到“NET 生成javascript的 __doPostBack()函数是有条件的,当页面上存在一个或一个以上的LINKBUTTON的时候才会有这个函数,所以,如果页面上没有LINKBUTTON只有BUTTON的时候会出现‘缺少对象’的JS错误提示”,于是马上在页面放一用样式隐藏的LINKBUTTON,可问题依旧。这可怎办?因此还一度以为我把__doPostBack()的单词写错了,反反复复的进行单词对照,竟让我发现我的_doPostBack()的‘_’要比网上的‘__’短,修正过后,一切正常,终于OK。
经调试,不用LINKBUTTON亦可。
贴上相关源码
.aspx文件中加一段JavaScript:
<script type="text/javascript">
// 点击复选框时触发事件
function postBackByObject()
{
var o = window.event.srcElement;
if (o.tagName == "INPUT" && o.type == "checkbox")
{
//这里的第一个参数是UpdatePanel ID,因为我使用了MS的ASPAJAX来实现局部刷新
//如果没有使用MS的ASPAJAX,这里的两个参数都可以为空
__doPostBack("UP_TreeView","");
}
}
</script>
.cs文件
protected void BindTreeViewData()
{
//
//省略TreeView的数据绑定
//
TreeView1.Attributes.Add("onclick", "postBackByObject()");
}
#region 级联父子节点的复选框状态
protected void TreeView1_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
{
SetChildChecked(e.Node);
// 判断是否是根节点
if (e.Node.Parent != Null)
{
SetParentChecked(e.Node);
}
}
/// <summary>
/// 根据父节点状态设置子节点的状态
/// </summary>
/// <param name="parentNode"></param>
private void SetChildChecked(TreeNode parentNode)
{
foreach (TreeNode node in parentNode.ChildNodes)
{
node.Checked = parentNode.Checked;
if (node.ChildNodes.Count > 0)
{
SetChildChecked(node);
}
}
}
/// <summary>
/// 根据子节点状态设置父节点的状态
/// </summary>
/// <param name="childNode"></param>
private void SetParentChecked(TreeNode childNode)
{
TreeNode parentNode = childNode.Parent;
if (!parentNode.Checked && childNode.Checked)
{
int ichecks = 0;
foreach (TreeNode node in parentNode.ChildNodes)
{
if (node.Checked)
{
ichecks++;
}
}
if (ichecks == parentNode.ChildNodes.Count)
{
parentNode.Checked = true;
if (parentNodeParent != Null)
{
SetParentChecked(parentNode);
}
}
}
else if (parentNode.Checked && !childNode.Checked)
{
parentNode.Checked = false;
}
}
#endregion
相关资料来源:
1、http://www.cnblogs.com/xiazhaoxia/archive/2006/09/25/513953.html
2、http://www.cnblogs.com/javaca88/archive/2006/10/26/540827.html
3、http://pengtingming.blog.163.com/blog/static/13556932008523101418599/
posted @
2008-07-08 21:48 Bob.Xie 阅读(124) |
评论 (0) |
编辑

2008年6月23日
当上设计师后的十三种痛
1、很快你就会发现几千元的工资不算什么。
2、很快你就会发现金钱的获得是以时间和个人生活的牺牲为代价的。
3、很快你就会发现自己有点小钱但不幸福。
4、很快你就会讨厌自己,讨厌自己的复杂和世故。
5、很快你就会发现你身边的很多人怎么素质这么低,这么俗,而你也快成为这样的了。
6、很快你就会讨厌冬天的,太冷了,太冷清和寂寞了。
7、别人工作是为了生活,同时享受生活;而你工作是为了别人更好地生活,为此你的生活也是工作。你会不断地觉醒,不断地继续奋斗,然后你老想著辞职休息,或者深造,或者创业,直至过劳死。
8、你会偶尔去同学录看看,但你已经不想再说话了。
9、你会偶尔想起自己以前最好的朋友,然后给他/她打个无聊的电话。
10、你会偶尔给自己的初恋情人打个电话,然后你发现自己老了。
11、你甚至会发现自己现在成熟得可怕,一件很复杂的事情,你一眼就看穿了,而你的依据是你对黑暗的了解。
12、你想幸福就要自己花一生的时间去先痛苦。
13、当你工作后发现你喜欢摇滚乐的时候,证明你还在挣扎,当你工作后发现自己喜欢忧郁的轻音乐时,你就快完蛋了。
posted @
2008-06-23 20:21 Bob.Xie 阅读(76) |
评论 (4) |
编辑