DODONG

博客园 首页 新随笔 联系 订阅 管理
//-----数据库结构-----------------------//

CREATE TABLE [T_Menu] (
    [ID] [
int] NOT NULL ,
    [PARENTID] [nvarchar] (
50) COLLATE Chinese_PRC_CI_AS NULL ,
    [NODENAME] [nvarchar] (
100) COLLATE Chinese_PRC_CI_AS NULL ,
    [NODEID] [nvarchar] (
50) COLLATE Chinese_PRC_CI_AS NULL ,
    [ORDERID] [
int] NULL ,
    CONSTRAINT [PK_T_Menu] PRIMARY KEY  CLUSTERED 
    (
        [ID]
    )  ON [PRIMARY] 
) ON [PRIMARY]
GO


//----------显示树结构---------------//
public class treeleft : System.Web.UI.Page
    
{
        
protected System.Web.UI.WebControls.Label lbl_Curnodeid;
        
protected Microsoft.Web.UI.WebControls.TreeView TreeView1;
    

        
public DataTable dt;
        
public DataRow dr;

        
private void Page_Load(object sender, System.EventArgs e)
        
{
            
if (!Page.IsPostBack)
            
{
                TreeView();
                
            }

        }


        
        
private void TreeView()
        
{
            DocTree doctree 
= new DocTree();
            
string str_Sql = "select * from T_Menu order by orderid";
            dt 
= doctree.ExecSQL(str_Sql);
            
            
if (dt.Rows.Count > 0)// 遍历树
            {
                BindTreeView1(
"ID","ParentID","NodeID","NodeName",str_Sql,"mainFrame","Treeright.aspx",lbl_Curnodeid,TreeView1);    
            }

        }


        
public void  BindTreeView1(string ID,string parentID,string NodeID,string NodeName,string str_Sql,string Frame,string Url,Label lbl_Curnodeid,TreeView TreeView1)
        
{

            
            DocTree doctree 
= new DocTree();
            DataTable dt 
= doctree.ExecSQL(str_Sql); // 获得树的内存表
            TreeView1.Nodes.Clear(); // 清空树

            TreeNode rootnode
=new TreeNode();

            rootnode.Text 
= dt.Rows[0][NodeName].ToString(); // 给节点绑定显示值mytext
            rootnode.NodeData=dt.Rows[0][ID].ToString(); // 给节点绑定key值 nodeid
            
            rootnode.Expanded
=true// 默认根结点为展开

            rootnode.Target 
= Frame;
            rootnode.NavigateUrl 
= Url+"?"+NodeID+"=" + dt.Rows[0][NodeID].ToString()+"&NodeName="+dt.Rows[0][NodeName].ToString();
            TreeView1.Nodes.Add(rootnode);
            
string parentid=dt.Rows[0][parentID].ToString()+dt.Rows[0][ID].ToString()+"_"// 他子节点的parentid字段值
            CreateNode1(ID,parentID,NodeID,NodeName,Frame,Url,parentid,rootnode);// 加入所有根结点以下的结点                                                 
        }

        


        
public void CreateNode1(string ID,string parentID,string NodeID,string NodeName,string Frame,string Url,string parentid,TreeNode parentnode)
        
{
            DataRow [] drs 
= dt.Select("parentid = '" + parentid + "'");// 选出所有子节点
            
//遍历所有子节点
            foreach( DataRow r in drs )
            
{
                TreeNode tempnode 
= new TreeNode();
                tempnode.Text 
= r["NodeName"].ToString();
                tempnode.NodeData 
= r[ID].ToString();
                parentnode.Nodes.Add(tempnode);
                tempnode.Expanded
=true;
                tempnode.Target 
= Frame;
                tempnode.NavigateUrl 
= Url+"?"+NodeID+"=" + r[NodeID].ToString()+"&NodeName="+r[NodeName].ToString();
                parentid 
= r["parentid"].ToString() + r["ID"].ToString()+"_";
                CreateNode1(ID,parentID,NodeID,NodeName,Frame,Url,parentid,tempnode);
            }

        }

//-------------------------操作树,增加节点,修改------------aspx------------------------//
    <form id="Form1" method="post" runat="server">
            
<table cellSpacing="1" cellPadding="4" width="100%" bgColor="#7f0040" border="0">
                
<tr bgColor="#ffffff">
                    
<td bgColor="#d2a9ac">
                        
<asp:label id="Label2" runat="server">Label</asp:label><b><font color="red"></font></b>下增加栏目</td>
                
</tr>
                
<tr bgColor="#ffffff">
                    
<td>
                        
<div align="center">要增加栏目名称(中文):&nbsp;
                            
<asp:textbox id="TexAdd_cn" runat="server"></asp:textbox>(英文):&nbsp;
                            
<asp:textbox id="TexAdd_en" runat="server"></asp:textbox></div>
                    
</td>
                
</tr>
                
<tr bgColor="#ffffff">
                    
<td>
                        
<div align="center"><input class="ubo" id="Submit2" type="submit" value="增加" name="Submit3" runat="server">
                        
</div>
                    
</td>
                
</tr>
            
</table>
            
<br>
            
<table cellSpacing="1" cellPadding="4" width="100%" bgColor="#7f0040" border="0">
                
<tr bgColor="#ffffff">
                    
<td bgColor="#d2a9ac">修改
                        
<asp:label id="Label1" runat="server">Label</asp:label><b><font color="red"></font></b>栏目</td>
                
</tr>
                
<tr bgColor="#ffffff">
                    
<td>
                        
<div align="center">要修改栏目名称(中文):&nbsp;
                            
<asp:textbox id="TexUpdate_cn" runat="server"></asp:textbox>(英文):&nbsp;
                            
<asp:textbox id="TexUpdate_en" runat="server"></asp:textbox></div>
                    
</td>
                
</tr>
                
<tr bgColor="#ffffff">
                    
<td>
                        
<div align="center">
                            
<input class="ubo" id="Submit1" type="submit" value="修改" name="Submit3" runat="server">
                            
<input class="ubo" id="Reset1" type="reset" value="还原" name="Submit22" runat="server">&nbsp;&nbsp;
                        
</div>
                    
</td>
                
</tr>
            
</table>
            
<br>
            
<asp:Label id="lbl_Curnodeid" style="Z-INDEX: 101; LEFT: 72px; POSITION: absolute; TOP: 216px"
                runat
="server"></asp:Label>
        
</form>
-------------------------------------------------.cs--------------------
    
private void Page_Load(object sender, System.EventArgs e)
        
{
            
//NodeName = Request.QueryString["NodeName"];
            
//NodeID = Request.QueryString["NodeID"];

            
if (!Page.IsPostBack)
            
{
                
string NodeID = Request.QueryString["NodeID"].ToString().Substring(0,Request["NodeID"].ToString().Length-1);
                
string NodeName = Request.QueryString["NodeName"];
                Label1.Text 
= NodeName.ToString();
                Label2.Text 
= NodeName.ToString();
                Label2.Font.Bold
=true;
                Label1.Font.Bold
=true;
                TexUpdate_cn.Text 
= NodeName;
                lbl_Curnodeid.Text
=GetTwoMiddleLastStr(NodeID,"_","_");

            }

        }


        
/// <summary>
        
///  获得两个字符之间最后一次出现时的所有字符
        
/// </summary>
        
/// <param name="strOriginal">要处理的字符</param>
        
/// <param name="strFirst">最前哪个字符</param>
        
/// <param name="strLast">最后哪个字符</param>
        
/// <returns>返回值</returns>

        public string GetTwoMiddleLastStr(string strOriginal,string strFirst,string strLast)
        
{
            strOriginal
=GetLastStr(strOriginal,strFirst);
            strOriginal
=GetFirstStr(strOriginal,strLast);
            
return strOriginal;
        }


        
/// <summary>
        
/// 获得某个字符串在另个字符串第一次出现时前面所有字符
        
/// </summary>
        
/// <param name="strOriginal">要处理的字符</param>
        
/// <param name="strSymbol">符号</param>
        
/// <returns>返回值</returns>

        public string GetFirstStr(string strOriginal,string strSymbol)
        
{
            
int strPlace=strOriginal.IndexOf(strSymbol);
            
if (strPlace!=-1)
                strOriginal
=strOriginal.Substring(0,strPlace);
            
return strOriginal;
        }


        
/// <summary>
        
/// 获得某个字符串在另个字符串最后一次出现时后面所有字符
        
/// </summary>
        
/// <param name="strOriginal">要处理的字符</param>
        
/// <param name="strSymbol">符号</param>
        
/// <returns>返回值</returns>

        public string GetLastStr(string strOriginal,string strSymbol)
        
{
            
int strPlace=strOriginal.LastIndexOf(strSymbol)+strSymbol.Length;
            strOriginal
=strOriginal.Substring(strPlace);
            
return strOriginal;
        }


        

        
private void Submit2_ServerClick(object sender, System.EventArgs e)
        
{
            
            
if (Request.QueryString["NodeID"]==null// 判断是否选择右边树导航
            {
                JScript.Alert(
"请选择左边栏目名称!");
                
return;
            }

            
// 下面是增加子节点
            this.AddChildNode("ID","parentid","Nodeid","NodeName",lbl_Curnodeid);
            
// 刷新左边树导航
            Response.Write ("<script language=\"javascript\">parent.frames(\"leftFrame\").document.location.reload();</"+"script>");
        }



        
public void AddChildNode(string ID,string parentid,string NodeID,string NodeName,Label lbl_Curnodeid)
        
{
            
if(TexAdd_cn.Text!="")
            
{
                DocTree doctree 
= new DocTree();
                
string str_Sql="Select Max("+ID+") as ID from T_Menu";
                DataRow Row 
= doctree.ExecSQL(str_Sql).Rows[0];
    
                
string str_MaxId=(int.Parse(Row[0].ToString())+1).ToString();
                str_Sql
="select * from T_Menu where "+ID+"="+lbl_Curnodeid.Text;
                
                 Row 
= doctree.ExecSQL(str_Sql).Rows[0];
                
string str_=Row[parentid]+lbl_Curnodeid.Text+"_";
                
string str_Location=str_+str_MaxId+"_";
                
string str_Sql1="INSERT INTO T_Menu ("+ID+",ORDERID,"+parentid+","+NodeID+","+NodeName+") VALUES ("+str_MaxId+","+str_MaxId+",'"+str_+"','"+str_Location+"','"+TexAdd_cn.Text.Replace(" ","")+"')";
                
bool result = doctree._ExecSQL(str_Sql1);
            }

            
else
            
{
                JScript.Alert(
"请填写节点内容");
            }

        }

        

        
private void Submit1_ServerClick(object sender, System.EventArgs e)
        
{
            
if(TexUpdate_cn.Text.Trim()!="")
            
{
                DocTree doctree 
= new DocTree();
                
bool result = doctree._ExecSQL("Update T_Menu Set NodeName='"+ TexUpdate_cn.Text.Trim() +"' Where NODEID='"+ Request.QueryString["NodeID"+"'");
                
if ( result)
                
{
                    JScript.Alert(
"修改完成");
                }

                Page.RegisterClientScriptBlock(
"js","<script>parent.frames(\"leftFrame\").document.location.reload();</script>");
            }

        }

posted on 2006-02-24 11:04  DODONG  阅读(2910)  评论(0编辑  收藏  举报