各位朋友,我做了个网页,左边的DIV里面是个表格,有各种信息,右侧的DIV中有个AJAX的控件ModalPopupExtender,该控件的TargetControlID=“左边表格的一个按钮的ID”,PopupControlID=“一个含有TreeView的面板ID”,现在我已经实现了点左边表格中的按钮显示出TreeView,我的问题是我选中TreeView中的节点时,将该节点的值传入左侧表格的一个文本框中,现在值也能传过去,可每传一次页面就刷新一次,我不想让他刷新应该怎么办?我在左侧表格放过UpdatePanel,可给我报错,不知各位有什么高见,谢谢,在线等答案,辛苦大家了帮忙看看

解决方案 »

  1.   

    TreeView和UpdatePanel不兼容,如果你的TreeView放在UpdatePanel中,你的问题怕很难解决
      

  2.   

    treeview是server控件,当然会刷新。我也想不出来怎么办,帮你顶顶
      

  3.   


    先设置 EnableClientScript 设置为 false ,才能用在updatepanel中。不过这时需要在后台的几个事件中写状态管理代码记录节点的展开/折叠状态。当这个参数是true时,特别是 PopulateNodesFromClient 同时设置为 true 时,用于早先的 ajax方法,确实与 updatepanel 不兼容。
      

  4.   

    是不是要达到此效果比较麻烦?我传值都实现了没想到不想要刷新这么麻烦,我想让左边的表格被传完值不刷新,才尝试放UpdatePanel,现在报错不知怎么办了
      

  5.   

    你看看下面这段代码能不能满足你的要求<%@ Page Language="C#" AutoEventWireup="true" CodeFile="B.aspx.cs" Inherits="B" %><%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %><!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">
         <cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></cc1:ToolkitScriptManager>
        <div>
         <div>
             <asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="False" RenderMode="Inline" UpdateMode="Conditional">
                 <ContentTemplate>
                     <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                 </ContentTemplate>
                 <Triggers>
                     <asp:AsyncPostBackTrigger ControlID="TreeView1" EventName="SelectedNodeChanged" />
                 </Triggers>
             </asp:UpdatePanel>         <asp:ImageButton ID="ImageButton1" runat="server" />
         </div>
        <div>
            <div> 
            <cc1:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="ImageButton1" PopupControlID="Panel1" X="750" Y="250"> 
            </cc1:ModalPopupExtender> 
            <asp:Panel ID="Panel1" runat="server" Height="50px" Width="125px"> 
                <asp:TreeView ID="TreeView1" runat="server" OnSelectedNodeChanged="TreeView1_SelectedNodeChanged" > 
                    <Nodes>
                        <asp:TreeNode Text="root" Value="root">
                            <asp:TreeNode Text="aa" Value="aa"></asp:TreeNode>
                            <asp:TreeNode Text="bb" Value="bb"></asp:TreeNode>
                        </asp:TreeNode>
                    </Nodes>
                </asp:TreeView> 
            </asp:Panel> 
        </div> 
        </div>
        </div>
        </form>
    </body>
    </html>
      

  6.   

    报告高歌老师,你的方法很成功,可知其然也要知其所以然,还请帮忙解释一下这几句中的属性是啥意思啊
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="False" RenderMode="Inline" UpdateMode="Conditional">
     <Triggers>
                     <asp:AsyncPostBackTrigger ControlID="TreeView1" EventName="SelectedNodeChanged" />
      </Triggers>
    上网看了看都不是很清楚说的,有空的话还请帮忙解释一下
      

  7.   

             <asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="False" RenderMode="Inline" UpdateMode="Conditional" >
                 <ContentTemplate>
                     <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                 </ContentTemplate>
                 <Triggers>
                     <asp:AsyncPostBackTrigger ControlID="TreeView1" EventName="SelectedNodeChanged" />
                 </Triggers>
             </asp:UpdatePanel>
    ==
    ChildrenAsTriggers="False"  updatepanel里的子控件不引发更新,对于本例不重要
    UpdateMode="Conditional" 这个属性非常重要,代表此updatepanel并不是每次都更新,而是有条件的更新,在本例中根据TreeView的SelectedNodeChanged更新,也可以在后台代码中明确调用updatepanel的update方法完成同样的功能 
    RenderMode="Inline" 这个不重要,表示这个updatepanel在客户端生成的是span标记,而不是div             <Triggers>
                     <asp:AsyncPostBackTrigger ControlID="TreeView1" EventName="SelectedNodeChanged" />
                 </Triggers>
    ==
    这里定义了触发器,触发器就是一种绑定,它决定了哪一个外部控件(本例是TreeView1)的哪一个事件(本例是SelectedNodeChanged)会引发异步回送并更新此UpdatePanel控件的内容,对于本例很重要