日期:2014-05-17  浏览次数:20506 次

为什么asp.net中TreeView控件,选中checkbox不会触发事件,非要点一下结点才行?
为什么在asp.net中TreeView控件,选中checkbox不会触发事件,非要点一下结点才触发TreeView1_TreeNodeCheckChanged事件?有没有TreeView的实例,勾选了几个子结点后,右边的列表会选条件筛选。
我目前在做的是人事的一个小系统,左边是一个部门列表的TreeView,右边是一个人员列表的GridView,我想通过勾选左边的部门来筛选右边的人员。
那位大侠给个完整点的实例,本人菜鸟,刚学asp.net没两个月。谢谢!

------解决方案--------------------
多选是吗?

那么当然是选择多个checkbox之后点击一个button才去开始调用业务层并然后才刷新右边的内容。

asp.net并不像winform或则silverlight那样的运行平台,因此asp.net无法做到灵敏的交互操作体验。当多选的时候每当选择一个都刷新右边,这反而对asp.net程序来说是不好的用户体验,只有那些不太懂ajax而第一次使用它的人才会去犯这个毛病。
------解决方案--------------------
可以注册JS触发
------解决方案--------------------
貌似可以啊

protected void TreeView1_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
    {
        setChildNodeCheckedState(e.Node,e.Node.Checked);
    }


------解决方案--------------------
多条件判断就选择之后,再点击按钮等查询绑定到gridview
  protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
 {
        if (this.TreeView1.SelectedNode != null)
        {}
 }

 this.TreeView1.Attributes.Add("onclick", "postBackByObject()");
function postBackByObject()
{
    var o = window.event.srcElement;
    if (o.tagName == "INPUT" && o.type == "checkbox")
    {
       var c = document.getElementsByTagName("INPUT");
       __doPostBack("","");
    } 
}