我想做电脑零件这样的网页。有3个网页。分别为 masterpage.master, default.aspx, default2.aspx
masterpage 有个 Treeview 是从northwind 提取的数据,然后生成了TreeView的目录。我原来先写了default2.aspx 这个和masterpage 一样,不过不是masterpage.master, 原来的可以该变 label1的值。 可后来加了masterpage.aspx,运行default.aspx label1 就不变了,很奇怪。请问为什么我想达到的效果 网页的上面是 home, 联系信息。左面是 TreeView 用户点击左面产品,相对产品信息出现在 ContentPlaceHolder 上面。查了很多地方,还是不知道如何用 MasterPage 和 ViewTree 达到这样的效果。我原来是用asp做的,用frame 和 include 可以达到这样效果,可 ASP.NET 2.0 怎末做呢万分感谢,MasterPage.master<%@ Master Language="VB" CodeFile="MasterPage.master.vb" Inherits="MasterPage" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %><!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>Untitled Page</title>
</head>
<script runat="server">    Const connectionString As String = _
      "Server=localhost;Integrated Security=True;Database=Northwind"
    
    Sub Page_Load()
        if NOT IsPostBack Then
            PopulateNodes()
        End If
    End Sub    Sub PopulateNodes()
        Dim dst As DataSet = GetTreeViewData()
        for each masterRow As DataRow in dst.Tables("Categories").Rows
            Dim masterNode As New _
              TreeNode(masterRow("CategoryName").ToString())
            TreeView1.Nodes.Add(masterNode)
            for each childRow As DataRow in _
              masterRow.GetChildRows("Children")
                Dim childNode As New _
                  TreeNode(childRow("ProductName").ToString())
                masterNode.ChildNodes.Add(childNode)
            next
        Next
        TreeView1.CollapseAll()
    End Sub   
        
    Function GetTreeViewData() As DataSet
        Dim con As SqlConnection = new SqlConnection(connectionString)
        Dim dadCats As SqlDataAdapter = new _
          SqlDataAdapter("SELECT * FROM Categories", con)
        Dim dadProducts As SqlDataAdapter = new _
          SqlDataAdapter("SELECT * FROM Products", con)
        Dim dst As DataSet = new DataSet()
        dadCats.Fill(dst, "Categories")
        dadProducts.Fill(dst, "Products")
        dst.Relations.Add("Children", _ 
            dst.Tables("Categories").Columns("CategoryID"), _ 
            dst.Tables("Products").Columns("CategoryID"))
        return dst
    End Function
    
    Protected Sub TreeView1_SelectedNodeChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        'Me.ContentPlaceHolder1.p()
        Label1.Text = TreeView1.SelectedNode.Value
    End Sub
</script>
<body>
    <form id="form1" runat="server">
    <div>
        <table>
            <tr>
                <td style="width: 100px">
                    <asp:LinkButton ID="LinkButton1" runat="server" PostBackUrl="~/Default2.aspx">Home</asp:LinkButton></td>
                <td style="width: 100px">
                </td>
                <td style="width: 100px">
                    <asp:LinkButton ID="LinkButton2" runat="server" PostBackUrl="~/AboutUs.aspx">Contact US</asp:LinkButton></td>
            </tr>
            <tr>
                <td style="width: 100px">
                    <asp:TreeView ID="TreeView1" runat="server">
                    </asp:TreeView>
                </td>
                <td style="width: 100px">
        <asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
            ContentPlaceHolder</asp:contentplaceholder>
                </td>
                <td style="width: 100px">
                </td>
            </tr>
            <tr>
                <td style="width: 100px">
                </td>
                <td style="width: 100px">
                </td>
                <td style="width: 100px">
                </td>
            </tr>
        </table>
        &nbsp;<br />
        <br />
        <br />
        &nbsp;</div>
        <br />
        <br />
        <br />
        &nbsp;<asp:Label ID="Label1" runat="server" Text="Label" Width="278px"></asp:Label>
    </form>
</body>
</html>default2.aspx<%@ Page Language="VB" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head id="Head1" runat="server">
    <title>Populating TreeView Nodes from a SQL Database</title>
  </head>
  
<script runat="server">    Const connectionString As String = _
      "Server=localhost;Integrated Security=True;Database=Northwind"
    
    Sub Page_Load()
        if NOT IsPostBack Then
            PopulateNodes()
        End If
    End Sub    Sub PopulateNodes()
        Dim dst As DataSet = GetTreeViewData()
        for each masterRow As DataRow in dst.Tables("Categories").Rows
            Dim masterNode As New _
              TreeNode(masterRow("CategoryName").ToString())
            TreeView1.Nodes.Add(masterNode)
            for each childRow As DataRow in _
              masterRow.GetChildRows("Children")
                Dim childNode As New _
                  TreeNode(childRow("ProductName").ToString())
                masterNode.ChildNodes.Add(childNode)
            next
        Next
        TreeView1.CollapseAll()
    End Sub   
        
    Function GetTreeViewData() As DataSet
        Dim con As SqlConnection = new SqlConnection(connectionString)
        Dim dadCats As SqlDataAdapter = new _
          SqlDataAdapter("SELECT * FROM Categories", con)
        Dim dadProducts As SqlDataAdapter = new _
          SqlDataAdapter("SELECT * FROM Products", con)
        Dim dst As DataSet = new DataSet()
        dadCats.Fill(dst, "Categories")
        dadProducts.Fill(dst, "Products")
        dst.Relations.Add("Children", _ 
            dst.Tables("Categories").Columns("CategoryID"), _ 
            dst.Tables("Products").Columns("CategoryID"))
        return dst
    End Function
    
    Protected Sub TreeView1_SelectedNodeChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        Label1.Text = TreeView1.SelectedNode.Value
    End Sub
</script>
<body>
    <form id="form1" runat="server">
        <br />
        <br />
    
    <asp:TreeView
        ID="TreeView1"
        Runat="Server" OnSelectedNodeChanged="TreeView1_SelectedNodeChanged" />
        <br />
        <br />
        <br />
        &nbsp;<asp:Label ID="Label1" runat="server" Text="Label" Width="278px"></asp:Label>
        
    </form>
</body>
</html>default.aspx<%@ Page Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    Welcome to Kangaroo Site.
</asp:Content>

解决方案 »

  1.   

    把default.aspx label1 放在placeholder里面
      

  2.   

    可否给出以下代码
    如何从treeview向contentPlaceHolder 里面动态的写入内容,或直接把另一个网页动态的写入ContentPlaceHolder
    左面是 TreeView 用户点击左面产品,相对产品信息出现在 ContentPlaceHolder 上面。
      

  3.   

    知道了,你的masterpage里的
                        <asp:TreeView ID="TreeView1" runat="server">
                        </asp:TreeView>
    没有事件呀!
    应该是<asp:TreeView ID="TreeView1" runat="server" OnSelectedNodeChanged="TreeView1_SelectedNodeChanged">