漫漫技术人生路

C#

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  234 随笔 :: 0 文章 :: 30 评论 :: 8 引用

公告

2006年10月26日 #

次实现的功能只能使选中/不选中父结点时,令它的所有子结点都设置为跟父结点一样的状态。
有时候,在选中一个子结点时,我们希望它的父结点也同时被选中。如下javascript代码可以实现这个功能:
//for treeview controller,其中pageTV为treeview对象
function tree_oncheck()
{
    var node = pageTV.getTreeNode(event.treeNodeIndex);
    var Pchecked = node.getAttribute("checked");
    if (Pchecked == true)
    {
     setfathercheck(node);     //这个函数实现了上述的附加功能
    }
    setcheck(node, Pchecked);
    pageTV.queueEvent('oncheck', node.getNodeIndex());
}
function setcheck(node, Pc)
{
    var ChildNode = new Array();
    ChildNode = node.getChildren();
     
    if (parseInt(ChildNode.length) != 0)
    {
        for (var i = 0; i < ChildNode.length; i++)
        {
            var cNode = ChildNode[i];
            if (cNode.getAttribute("checked") != Pc)
            {
                if (parseInt(cNode.getChildren().length) != 0)
                    setcheck(cNode, Pc);
                cNode.setAttribute("checked", Pc);
                pageTV.queueEvent('oncheck', cNode.getNodeIndex());
            }
        }
    }
}

function setfathercheck(node)
{
    var FatherNode;
    FatherNode = node.getParent();
    if (FatherNode != null )
    {
            if (FatherNode.getAttribute("checked") != true)
            {
    setfathercheck(FatherNode);
                FatherNode.setAttribute("checked", true);
                pageTV.queueEvent('oncheck', FatherNode.getNodeIndex());
           }
    }
}

需要修改微软treeview控件的一个Bug
需要修改inetpub\wwwroot\webctrl_client\1_0\treeview.htc。
把function doCheckboxClick(el)中的第一行,
el.checked = !el.checked;
改成:
el.checked = !el.getAttribute("checked");

posted @ 2006-10-26 16:56 javaca88 阅读(97) 评论(0) 编辑

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class addSer : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (Session["userId"] == null)
            {
                Response.Write("<script>alert('你还没有登陆');window.target='main';window.location.href='logic.aspx'</script>");
            }
            else
            {
               // DetailsView1.DefaultMode = DetailsViewMode.Insert;
            }

        }
    }

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        DropDownList dr = (DropDownList)FormView1.FindControl("DropDownList1");
        SqlDataSource1.InsertParameters[1].DefaultValue = dr.SelectedValue;
    }

    protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
    {
        DropDownList dr = (DropDownList)FormView1.FindControl("DropDownList2");
        SqlDataSource1.InsertParameters[7].DefaultValue = dr.SelectedValue;
    }

    protected void DropDownList3_SelectedIndexChanged(object sender, EventArgs e)
    {
        DropDownList dr = (DropDownList)FormView1.FindControl("DropDownList3");
        SqlDataSource1.InsertParameters[8].DefaultValue = dr.SelectedValue;
    }

    protected void DropDownList4_SelectedIndexChanged(object sender, EventArgs e)
    {
        DropDownList dr = (DropDownList)FormView1.FindControl("DropDownList4");
        SqlDataSource1.InsertParameters[10].DefaultValue = dr.SelectedValue;
    }


    protected void FormView1_ItemInserting(object sender, FormViewInsertEventArgs e)
    {
        if (SqlDataSource1.InsertParameters[1].DefaultValue == null)
        {
            DropDownList dr = (DropDownList)FormView1.FindControl("DropDownList1");
            SqlDataSource1.InsertParameters[1].DefaultValue = dr.Text;
        }

        if (SqlDataSource1.InsertParameters[7].DefaultValue == null)
        {
             DropDownList dr = (DropDownList)FormView1.FindControl("DropDownList2");
             SqlDataSource1.InsertParameters[7].DefaultValue = dr.Text;
        }

        if (SqlDataSource1.InsertParameters[8].DefaultValue == null)
        {
            DropDownList dr = (DropDownList)FormView1.FindControl("DropDownList3");
            SqlDataSource1.InsertParameters[8].DefaultValue = dr.Text;
        }

        if (SqlDataSource1.InsertParameters[10].DefaultValue == null)
        {
            DropDownList dr = (DropDownList)FormView1.FindControl("DropDownList4");
            SqlDataSource1.InsertParameters[10].DefaultValue = dr.Text;
        }
    }
    protected void FormView1_ItemInserted(object sender, FormViewInsertedEventArgs e)
    {
        Response.Write("<script>alert('插入成功,请继续添加');</script>");
    }
}


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="addSer.aspx.cs" Inherits="addSer"  %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        &nbsp;&nbsp;&nbsp;
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:gpCustomerConnectionString %>"
            DeleteCommand="DELETE FROM [mendRecordTable] WHERE [mendFileId] = @mendFileId"
            InsertCommand="INSERT INTO [mendRecordTable] ([creatTime], [creatEmployId], [proId], [proCode], [customerId], [stateBeforeMend], [mendRecord], [mendEmployId], [quchEmployId], [outTime], [outDoEmployId], [receiveCom], [receiveMen], [receiveAdd], [receiveTel], [outDemo]) VALUES (@creatTime, @creatEmployId, @proId, @proCode, @customerId, @stateBeforeMend, @mendRecord, @mendEmployId, @quchEmployId, @outTime, @outDoEmployId, @receiveCom, @receiveMen, @receiveAdd, @receiveTel, @outDemo)"
            SelectCommand="SELECT * FROM [mendRecordTable]" UpdateCommand="UPDATE [mendRecordTable] SET [creatTime] = @creatTime, [creatEmployId] = @creatEmployId, [proId] = @proId, [proCode] = @proCode, [customerId] = @customerId, [stateBeforeMend] = @stateBeforeMend, [mendRecord] = @mendRecord, [mendEmployId] = @mendEmployId, [quchEmployId] = @quchEmployId, [outTime] = @outTime, [outDoEmployId] = @outDoEmployId, [receiveCom] = @receiveCom, [receiveMen] = @receiveMen, [receiveAdd] = @receiveAdd, [receiveTel] = @receiveTel, [outDemo] = @outDemo WHERE [mendFileId] = @mendFileId">
            <DeleteParameters>
                <asp:Parameter Name="mendFileId" Type="Int32" />
            </DeleteParameters>
            <UpdateParameters>
                <asp:Parameter Name="creatTime" Type="DateTime" />
                <asp:Parameter Name="creatEmployId" Type="String" />
                <asp:Parameter Name="proId" Type="String" />
                <asp:Parameter Name="proCode" Type="String" />
                <asp:Parameter Name="customerId" Type="String" />
                <asp:Parameter Name="stateBeforeMend" Type="String" />
                <asp:Parameter Name="mendRecord" Type="String" />
                <asp:Parameter Name="mendEmployId" Type="String" />
                <asp:Parameter Name="quchEmployId" Type="String" />
                <asp:Parameter Name="outTime" Type="DateTime" />
                <asp:Parameter Name="outDoEmployId" Type="String" />
                <asp:Parameter Name="receiveCom" Type="String" />
                <asp:Parameter Name="receiveMen" Type="String" />
                <asp:Parameter Name="receiveAdd" Type="String" />
                <asp:Parameter Name="receiveTel" Type="String" />
                <asp:Parameter Name="outDemo" Type="String" />
                <asp:Parameter Name="mendFileId" Type="Int32" />
            </UpdateParameters>
            <InsertParameters>
                <asp:Parameter Name="creatTime" Type="DateTime" />
                <asp:Parameter Name="creatEmployId" Type="String" />
                <asp:Parameter Name="proId" Type="String" />
                <asp:Parameter Name="proCode" Type="String" />
                <asp:Parameter Name="customerId" Type="String" />
                <asp:Parameter Name="stateBeforeMend" Type="String" />
                <asp:Parameter Name="mendRecord" Type="String" />
                <asp:Parameter Name="mendEmployId" Type="String" />
                <asp:Parameter Name="quchEmployId" Type="String" />
                <asp:Parameter Name="outTime" Type="DateTime" />
                <asp:Parameter Name="outDoEmployId" Type="String" />
                <asp:Parameter Name="receiveCom" Type="String" />
                <asp:Parameter Name="receiveMen" Type="String" />
                <asp:Parameter Name="receiveAdd" Type="String" />
                <asp:Parameter Name="receiveTel" Type="String" />
                <asp:Parameter Name="outDemo" Type="String" />
            </InsertParameters>
        </asp:SqlDataSource>
    </div>
        <asp:FormView ID="FormView1" runat="server" DefaultMode="Insert" DataKeyNames="mendFileId" DataSourceID="SqlDataSource1" OnItemInserting="FormView1_ItemInserting" Width="360px" OnItemInserted="FormView1_ItemInserted">
            <EditItemTemplate>
        
                mendFileId:
                <asp:TextBox ID="mendFileIdTextBox1" runat="server" Text='<%# Eval("mendFileId") %>'>
                </asp:TextBox><br />
                creatTime:
                <asp:TextBox ID="creatTimeTextBox" runat="server" Text='<%# Bind("creatTime") %>'>
                </asp:TextBox><br />
                creatEmployId:
                <asp:TextBox ID="creatEmployIdTextBox" runat="server" Text='<%# Bind("creatEmployId") %>'>
                </asp:TextBox><br />
                proId:
                <asp:TextBox ID="proIdTextBox" runat="server" Text='<%# Bind("proId") %>'>
                </asp:TextBox><br />
                proCode:
                <asp:TextBox ID="proCodeTextBox" runat="server" Text='<%# Bind("proCode") %>'>
                </asp:TextBox><br />
                customerId:
                <asp:TextBox ID="customerIdTextBox" runat="server" Text='<%# Bind("customerId") %>'>
                </asp:TextBox><br />
                stateBeforeMend:
                <asp:TextBox ID="stateBeforeMendTextBox" runat="server" Text='<%# Bind("stateBeforeMend") %>'>
                </asp:TextBox><br />
                mendRecord:
                <asp:TextBox ID="mendRecordTextBox" runat="server" Text='<%# Bind("mendRecord") %>'>
                </asp:TextBox><br />
                mendEmployId:
                <asp:TextBox ID="mendEmployIdTextBox" runat="server" Text='<%# Bind("mendEmployId") %>'>
                </asp:TextBox><br />
                quchEmployId:
                <asp:TextBox ID="quchEmployIdTextBox" runat="server" Text='<%# Bind("quchEmployId") %>'>
                </asp:TextBox><br />
                outTime:
                <asp:TextBox ID="outTimeTextBox" runat="server" Text='<%# Bind("outTime") %>'>
                </asp:TextBox><br />
                outDoEmployId:
                <asp:TextBox ID="outDoEmployIdTextBox" runat="server" Text='<%# Bind("outDoEmployId") %>'>
                </asp:TextBox><br />
                receiveCom:
                <asp:TextBox ID="receiveComTextBox" runat="server" Text='<%# Bind("receiveCom") %>'>
                </asp:TextBox><br />
                receiveMen:
                <asp:TextBox ID="receiveMenTextBox" runat="server" Text='<%# Bind("receiveMen") %>'>
                </asp:TextBox><br />
                receiveAdd:
                <asp:TextBox ID="receiveAddTextBox" runat="server" Text='<%# Bind("receiveAdd") %>'>
                </asp:TextBox><br />
                receiveTel:
                <asp:TextBox ID="receiveTelTextBox" runat="server" Text='<%# Bind("receiveTel") %>'>
                </asp:TextBox><br />
                outDemo:
                <asp:TextBox ID="outDemoTextBox" runat="server" Text='<%# Bind("outDemo") %>'>
                </asp:TextBox><br />
                <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update"
                    Text="更新">
                </asp:LinkButton>
                <asp:LinkButton ID="UpdateCancelButton" runat="server" CausesValidation="False" CommandName="Cancel"
                    Text="取消">
                </asp:LinkButton>
            </EditItemTemplate>
            <InsertItemTemplate>
            <table>
              <tr><td>  建档日期:</td><td>
                <asp:TextBox ID="creatTimeTextBox" runat="server" Text='<%# Bind("creatTime") %>'>
                </asp:TextBox></td></tr>
               <tr><td>  建档人工号:</td><td>
                  <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource2" DataTextField="Name" DataValueField="employId" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"  >
                   </asp:DropDownList></td></tr>
               <tr><td>  产品ID:</td><td>
                <asp:TextBox ID="proIdTextBox" runat="server" Text='<%# Bind("proId") %>'>
                </asp:TextBox></td></tr>
               <tr><td> 产品编号:</td><td>
                <asp:TextBox ID="proCodeTextBox" runat="server" Text='<%# Bind("proCode") %>'>
                </asp:TextBox></td></tr>
               <tr><td>  客户ID:</td><td>
                <asp:TextBox ID="customerIdTextBox" runat="server" Text='<%# Bind("customerId") %>'>
                </asp:TextBox></td></tr>
               <tr><td>   维修前情况:</td><td>
                <asp:TextBox ID="stateBeforeMendTextBox" runat="server" Text='<%# Bind("stateBeforeMend") %>' TextMode="MultiLine">
                </asp:TextBox></td></tr>
                <tr><td> 维修记录:</td><td>
                <asp:TextBox ID="mendRecordTextBox" runat="server" Text='<%# Bind("mendRecord") %>' TextMode="MultiLine">
                </asp:TextBox></td></tr>
               <tr><td>  维修人工号:</td><td>
               <asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="SqlDataSource2" DataTextField="Name" DataValueField="employId" OnSelectedIndexChanged="DropDownList2_SelectedIndexChanged"  >
                   </asp:DropDownList></td></tr>
                <tr><td>质检人工号:</td><td><asp:DropDownList ID="DropDownList3" runat="server" DataSourceID="SqlDataSource2" DataTextField="Name" DataValueField="employId" OnSelectedIndexChanged="DropDownList3_SelectedIndexChanged"  >
                   </asp:DropDownList>
              </td></tr>
                <tr><td>发货日期:</td><td>
                <asp:TextBox ID="outTimeTextBox" runat="server" Text='<%# Bind("outTime") %>'>
                </asp:TextBox></td></tr>
               <tr><td> 发货经办人工号:</td><td><asp:DropDownList ID="DropDownList4" runat="server" DataSourceID="SqlDataSource2" DataTextField="Name" DataValueField="employId" OnSelectedIndexChanged="DropDownList4_SelectedIndexChanged"  >
                   </asp:DropDownList>
                </td></tr>
               <tr><td>  收货单位 :</td><td>
                <asp:TextBox ID="receiveComTextBox" runat="server" Text='<%# Bind("receiveCom") %>'>
                </asp:TextBox></td></tr>
                <tr><td>收货人:</td><td>
                <asp:TextBox ID="receiveMenTextBox" runat="server" Text='<%# Bind("receiveMen") %>'>
                </asp:TextBox></td></tr>
               <tr><td>  收货人地址:</td><td>
                <asp:TextBox ID="receiveAddTextBox" runat="server" Text='<%# Bind("receiveAdd") %>'>
                </asp:TextBox></td></tr>
                <tr><td>收货人电话:</td><td>
                <asp:TextBox ID="receiveTelTextBox" runat="server" Text='<%# Bind("receiveTel") %>'>
                </asp:TextBox></td></tr>
                <tr><td>发货备注:</td><td>
                <asp:TextBox ID="outDemoTextBox" runat="server" Text='<%# Bind("outDemo") %>' TextMode="MultiLine">
                </asp:TextBox></td></tr>
                <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert"
                    Text="插入">
                </asp:LinkButton><asp:LinkButton ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel"
                    Text="取消">
                </asp:LinkButton></table>
            </InsertItemTemplate>
            <ItemTemplate>
                mendFileId:
                <asp:TextBox ID="mendFileIdTextBox" runat="server" Text='<%# Eval("mendFileId") %>'>
                </asp:TextBox><br />
                creatTime:
                <asp:TextBox ID="creatTimeTextBox" runat="server" Text='<%# Bind("creatTime") %>'></asp:TextBox><br />
                creatEmployId:
                <asp:TextBox ID="creatEmployIdTextBox" runat="server" Text='<%# Bind("creatEmployId") %>'>
                </asp:TextBox><br />
                proId:
                <asp:TextBox ID="proIdTextBox" runat="server" Text='<%# Bind("proId") %>'></asp:TextBox><br />
                proCode:
                <asp:TextBox ID="proCodeTextBox" runat="server" Text='<%# Bind("proCode") %>'></asp:TextBox><br />
                customerId:
                <asp:TextBox ID="customerIdTextBox" runat="server" Text='<%# Bind("customerId") %>'>
                </asp:TextBox><br />
                stateBeforeMend:
                <asp:TextBox ID="stateBeforeMendTextBox" runat="server" Text='<%# Bind("stateBeforeMend") %>'>
                </asp:TextBox><br />
                mendRecord:
                <asp:TextBox ID="mendRecordTextBox" runat="server" Text='<%# Bind("mendRecord") %>'>
                </asp:TextBox><br />
                mendEmployId:
                <asp:TextBox ID="mendEmployIdTextBox" runat="server" Text='<%# Bind("mendEmployId") %>'>
                </asp:TextBox><br />
                quchEmployId:
                <asp:TextBox ID="quchEmployIdTextBox" runat="server" Text='<%# Bind("quchEmployId") %>'>
                </asp:TextBox><br />
                outTime:
                <asp:TextBox ID="outTimeTextBox" runat="server" Text='<%# Bind("outTime") %>'></asp:TextBox><br />
                outDoEmployId:
                <asp:TextBox ID="outDoEmployIdTextBox" runat="server" Text='<%# Bind("outDoEmployId") %>'>
                </asp:TextBox><br />
                receiveCom:
                <asp:TextBox ID="receiveComTextBox" runat="server" Text='<%# Bind("receiveCom") %>'>
                </asp:TextBox><br />
                receiveMen:
                <asp:TextBox ID="receiveMenTextBox" runat="server" Text='<%# Bind("receiveMen") %>'>
                </asp:TextBox><br />
                receiveAdd:
                <asp:TextBox ID="receiveAddTextBox" runat="server" Text='<%# Bind("receiveAdd") %>'>
                </asp:TextBox><br />
                receiveTel:
                <asp:TextBox ID="receiveTelTextBox" runat="server" Text='<%# Bind("receiveTel") %>'>
                </asp:TextBox><br />
                outDemo:
                <asp:TextBox ID="outDemoTextBox" runat="server" Text='<%# Bind("outDemo") %>'></asp:TextBox><br />
                <asp:LinkButton ID="EditButton" runat="server" CausesValidation="False" CommandName="Edit"
                    Text="编辑">
                </asp:LinkButton>
                <asp:LinkButton ID="DeleteButton" runat="server" CausesValidation="False" CommandName="Delete"
                    Text="删除">
                </asp:LinkButton>
                <asp:LinkButton ID="NewButton" runat="server" CausesValidation="False" CommandName="New"
                    Text="新建">
                </asp:LinkButton>
            </ItemTemplate>
        </asp:FormView>
        <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:gpCustomerConnectionString %>"
            SelectCommand="SELECT * FROM [employTable]"></asp:SqlDataSource>
        <br />
    </form>
</body>
</html>

posted @ 2006-10-26 16:38 javaca88 阅读(511) 评论(0) 编辑

    现在正在做一个小项目,用的是vs2005,要用到TreeView来管理一些分级数据,并能允许同时选中多个节点,因此需要用到TreeView的ShowCheckBox属性,当我用到的时候才发现,在选中复选框时并不会引起回发事件,这时我就犯愁了,该怎么办呢,从网上查了好多资料,发现有不少是用javascript来实现的TreeView的父子节点级联状态的,但是这些方法都不太适合VS2005的TreeView,于是我继续查阅,发现了一个比较适合VS2005的方法,下面这段话就是从一篇文章(作者是veryhappywx.net里摘录过来的:

【大家会在ASP.NET 2.0使用TreeView控件时发现带有CheckBox控件的TreeNode对象(TreeView节点),选择CheckBox无法回发页面。在MSDN中对于TreeView.TreeNodeCheckChanged事件有一段备注:“当 TreeView 控件的复选框在两次向服务器发送之间更改状态时,会引发 TreeNodeCheckChanged 事件。这使您可以提供一个这样的事件处理方法,即每次发生此事件时执行一个自定义例程(如更新数据库或显示的内容)。尽管 TreeNodeCheckChanged 事件在回发时激发,但更改复选框不会导致回发。”说明框架本身并不能提供一个CheckBox回发的机制,为了实现集联的选择,笔者实现了一种使用JavaScript去回发的方法,变相的解决了这个问题,尽管这样的方法看上去很不美,但是一定程度上能解决我们的实际问题。

 

大致思路,TreeNode对象输出的是一个附和的HTML对象(包括TDAInputCheckBox……),本身没有办法增加客户端脚本,所以为TreeView控件客户端的onclick事件中加入脚本,脚本目的:对于引发事件的对象都做判断,如果是InputCheckBox对象导致的事件,则直接调用__doPostBack来回发页面。】

 

下面就是代码,我做一些扩展,可以实现点击某一个复选框时,设置它的父节点的状态(如果它的父节点的所有子节点都没选中,那么父节点被设置为不选中,否则设置为选中),设置它的所有子节点的状态为它现在的选中状态

 

.aspx文件中加一段JavaScript

 

<script type="text/javascript">

// 点击复选框时触发事件

function postBackByObject()

 

{

    var o = window.event.srcElement;

    if (o.tagName == "INPUT" && o.type == "checkbox")

    {

       __doPostBack("","");

    }

}

</script> 

 

.cs文件

#region 级联父子节点的复选框状态

    /// <summary>

    /// 节点选中状态更改

    /// </summary>

    /// <param name="sender"></param>

    /// <param name="e"></param>

    protected void TreeNodeCheckChanged ( object sender, TreeNodeEventArgs e )

    {

        SetChildChecked ( e.Node );

        // 判断是否是根节点

        if ( !e.Node.Value.Equals ( "0" ) )

        {

            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 )

        {

            parentNode.Checked=true;

        }

        else if(parentNode.Checked && !childNode.Checked)

        {

            int checks = 0;

            foreach ( TreeNode node in parentNode.ChildNodes )

            {

                if ( node.Checked )

                {

                    checks++;

                    break;

                }

            }

 

            if ( checks == 0 )

            {

                parentNode.Checked = false;

                if ( !parentNode.Value.Equals ( "0" ) )

                {

                    SetParentChecked ( parentNode );

                }

            }

        }

    }

 

    #endregion

 希望对大家有用,

posted @ 2006-10-26 16:03 javaca88 阅读(790) 评论(1) 编辑

?
private void InitTree2(TreeNodeCollection Nds,string parentId,int flag)
{
DataView dv=new DataView();

TreeNode tmpNd;
dv.Table=dsTree.Tables[0];
dv.RowFilter="ParentId='" + parentId + "'" ;

foreach(DataRowView drv in dv)
{
tmpNd=new TreeNode();

tmpNd.ID = drv["ID"].ToString();
tmpNd.Text = "<INPUT type='checkbox' id='chkPlan' value='"+drv["ID"].ToString()+"' onclick='searchArea(this);'>"+drv["DName"].ToString();


tmpNd.NavigateUrl="DestLocalEdit.aspx?ID="+drv["ID"].ToString()+"&ParentID="+drv["ParentID"].ToString();

Nds.Add(tmpNd);
InitTree2(tmpNd.Nodes,tmpNd.ID,flag);
}
}

如果你希望知道当前选中的是哪些节点,其实可以换个思路,
首先在页面上方一个<INPUT id="Text1" type="hidden" name="Text1" runat="server" value=",">

然后改写一下 searchArea :
function searchArea(objTreeCheckBox)
{
var curID = objTreeCheckBox.value;
var selected = document.getElementById("Text1").value;
if(objTreeCheckBox.checked)
selected += curID + ",";
else
selected = selected.replace(","+curID+",",",");

document.getElementById("Text1").value = selected;
}


那么,无论是在javascript还是在后台C#代码中都可以随时获取目前选中的节点的value值
posted @ 2006-10-26 14:10 javaca88 阅读(756) 评论(0) 编辑

asp:TreeView ID="TreeView1" Runat="server" DataSourceID="XmlDataSource1" onclick="client_OnTreeNodeChecked();" ShowCheckBoxes="all">

<DataBindings>


<script language="javascript" type="text/javascript">
function client_OnTreeNodeChecked()
{
var obj = window.event.srcElement;
var treeNodeFound = false;
var checkedState;
if (obj.tagName == "INPUT" && obj.type == "checkbox") {
var treeNode = obj;
checkedState = treeNode.checked;
do
{
obj = obj.parentElement;
} while (obj.tagName != "TABLE")
var parentTreeLevel = obj.rows[0].cells.length;
var parentTreeNode = obj.rows[0].cells[0];
var tables = obj.parentElement.getElementsByTagName("TABLE");
var numTables = tables.length
if (numTables >= 1)
{
for (i=0; i < numTables; i++)
{
if (tables[i] == obj)
{
treeNodeFound = true;
i++;
if (i == numTables)
{
return;
}
}
if (treeNodeFound == true)
{
var childTreeLevel = tables[i].rows[0].cells.length;
if (childTreeLevel > parentTreeLevel)
{
var cell = tables[i].rows[0].cells[childTreeLevel - 1];
var inputs = cell.getElementsByTagName("INPUT");
inputs[0].checked = checkedState;
}
else
{
return;
}
}
}
}
}
}
</script>

posted @ 2006-10-26 13:40 javaca88 阅读(12) 评论(0) 编辑