TreeView動態綁定

来源:互联网 发布:北京思学通软件怎么样 编辑:程序博客网 时间:2024/06/08 00:10

 <div>
            <asp:TreeView ID="TvMenu" runat="server" ExpandDepth="0" Style="position: relative" ImageSet="Simple" CollapseImageUrl="~/images/decrease.jpg" ExpandImageUrl="~/images/add.jpg" AutoGenerateDataBindings="False" OnPreRender="TvMenu_PreRender" ShowLines="True">
          <ParentNodeStyle Font-Bold="False" />
          <HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
          <SelectedNodeStyle Font-Underline="True" ForeColor="#5555DD" HorizontalPadding="0px"
              VerticalPadding="0px" />
          <NodeStyle Font-Names="Tahoma" Font-Size="10pt" ForeColor="Black" HorizontalPadding="5px"
              NodeSpacing="0px" VerticalPadding="2px" />
        </asp:TreeView>
        </div>

 

public partial class _Default : System.Web.UI.Page
{
    TreeNode tmpNd;//一级节点声明
    TreeNode tmpNd2;//二级节点声明
    //TreeNode tmpNd3;//三级节点(包含于二级节点中)
    //TreeNode tmpNd4;//三级节点(不包含于二级节点)
    //
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    #region 加載資料庫中相關記錄
    protected void TvMenu_PreRender(object sender, EventArgs e)
    {
        //清空原有樹控件中的記錄數
        TvMenu.Nodes.Clear();
        // 用于添加一级节点的foreach语句
        DataTable dt = new MISFacade().Get_FirstMenuInfo();
        DataView dv =new DataView(dt);
        foreach (DataRowView drv in dv)
        {
            //给每个一级节点赋值
            tmpNd = new TreeNode();
            tmpNd.Value = drv["moduleid"].ToString();
            tmpNd.Text = drv["modulename"].ToString();
            tmpNd.NavigateUrl = "javascript:void(0)";
            //tmpNd.SelectAction = TreeNodeSelectAction.None;
            tmpNd.Expanded = false;
            TvMenu.Nodes.Add(tmpNd);
            //调用方法填充二级节点
            AddchildNodes(tmpNd);
        }
    }
    #endregion

    #region 填充二级节点
    private void AddchildNodes(TreeNode tmpNd)
    {
        string bid = tmpNd.Value.ToString();
        // 用于添加级二节点的foreach语句
        DataTable dt = new MISFacade().Get_SecondMenuInfo(bid);
        DataView dv = new DataView(dt);
        foreach (DataRowView drv in dv)
        {
            //给每个二级节点赋值
            tmpNd2 = new TreeNode();
            tmpNd2.Text = drv["modulename"].ToString();
            tmpNd2.Value = drv["moduleid"].ToString();
            tmpNd2.NavigateUrl = "javascript:void(0)";
            tmpNd.ChildNodes.Add(tmpNd2);
        }

    }
    #endregion

    #region

    #endregion
}

 

 #region 顯示所有一級目錄
    public DataTable Get_FirstMenuInfo()
    {
        DataTable dt;
        this.dataConn.Open();
        this.sqlDataAdapter = new SqlDataAdapter("sp_Get_FirstMenuInfo", dataConn);
        this.sqlDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
        dt = new DataTable();
        this.sqlDataAdapter.Fill(dt);
        this.dataConn.Close();
        return dt;
    }
    #endregion

    #region 填充二級目錄
    public DataTable Get_SecondMenuInfo(string aModuleid)
    {
        DataTable dt;
        this.dataConn.Open();
        this.sqlDataAdapter = new SqlDataAdapter("sp_Get_SecondMenuInfo", dataConn);
        this.sqlDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
        this.sqlDataAdapter.SelectCommand.Parameters.Add("@moduleid", SqlDbType.NVarChar, 50);
        this.sqlDataAdapter.SelectCommand.Parameters[0].Value = aModuleid;
        dt = new DataTable();
        this.sqlDataAdapter.Fill(dt);
        this.dataConn.Close();
        return dt;
    }
    #endregion