网页A有个treeview和IFRAME,在treeview的SelectedNodeChanged中加了程序代码,处理打开不同的网页,但打开的网页并不是在指定的iframe中显示,而是一个新的窗口。请问如何解决该问题。注意我一定要在SelectedNodeChanged事件中处理打开网页。代码如下:
<table>
<tr>
<td>
 <asp:TreeView ID="TreeView1" runat="server" Font-Size="12px" Width="143px"  AutoGenerateDataBindings="False" EnableTheming="True" ExpandDepth="1" OnSelectedNodeChanged="TreeView1_SelectedNodeChanged">
                <Nodes>
                 <asp:TreeNode Text="销售管理系统" Value="销售管理系统">
                        <asp:TreeNode Text="添加公司信息" Value="添加公司信息" > </asp:TreeNode>
                        <asp:TreeNode Text="添加商品信息" Value="添加商品信息" > </asp:TreeNode>
                        ....                 </
                 </asp:TreeNode> 
                </Nodes>
                <RootNodeStyle Font-Bold="True" Font-Size="14px" />
                <NodeStyle ForeColor="Black" NodeSpacing="3px" />
            </asp:TreeView>
</td>
         <TD ROWSPAN=2 HEIGHT=653 valign="top" >
<iframe style="height: 767px;" frameborder="0" height="640" name="main"            scrolling="no" src="main.aspx" width="100%" >
        </iframe>
        </TD>
</tr>
</table>
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {        string NodeText = TreeView1.SelectedNode.Text;
    
        if (NodeText == "添加公司信息")
        {
            TreeView1.Target = "main.aspx";
            Session["choice"] = "添加公司信息...";
        
           Response.Redirect("company_add.aspx");
        
        }
        if (NodeText == "添加商品信息")
        {
            TreeView1.Target = "main.aspx";
            Session["choice"] = "添加商品信息...";
            Response.Redirect("commodity_add.aspx");
          
        } 
    }

解决方案 »

  1.   

    TreeView1.Target = "main"; 
      

  2.   

    改成 TreeView1.Target = "main"; 还是弹出新窗口。
      

  3.   

    <asp:TreeView ID="tv" runat="server" Target="main" 
    onselectednodechanged="tv_SelectedNodeChanged">
        <Nodes> 
           <asp:TreeNode Text="销售管理系统" Value="销售管理系统"> 
               <asp:TreeNode Text="添加公司信息" Value="添加公司信息" > </asp:TreeNode> 
                <asp:TreeNode Text="添加商品信息" Value="添加商品信息" > </asp:TreeNode> 
           </asp:TreeNode> 
        </Nodes> 
    </asp:TreeView>
    protected void tv_SelectedNodeChanged(object sender, EventArgs e)
    {
        TreeNode tn = tv.SelectedNode;
        if (tn.Text == "添加公司信息")
            tn.NavigateUrl = "index.aspx";
    }
      

  4.   

    星宇:按你的方法是可以了。但有一个新问题出现,就是开始第一次点TREEVIEW时必须鼠标点两次,如点“添加公司新”两次才会显示网页,第一次只是一闪,点第二次后就正常,以后就只要点一次即可。这是什么原因?
      

  5.   

    <form id="form1" runat="server" target="main">
      

  6.   

    因为你点击执行tv_SelectedNodeChanged的时候,才定义了节点的NavigateUrl属性,所以要点击第二次才有效.你可以不要定义selectednodechanged事件,直接这样:
    <asp:TreeView ID="tv" runat="server" Target="main">
        <Nodes>
            <asp:TreeNode Text="销售管理系统" Value="销售管理系统"> 
                <asp:TreeNode Text="添加公司信息" Value="添加公司信息" NavigateUrl="company_add.aspx" > </asp:TreeNode> 
                <asp:TreeNode Text="添加商品信息" Value="添加商品信息" NavigateUrl="commodity_add.aspx"> </asp:TreeNode> 
            </asp:TreeNode> 
        </Nodes> 
    </asp:TreeView>