UpdatePanel 里有1个TreeView,2个LISTBOX,为什么点TreeView的时候,2个LISTBOX有刷新的感觉,而TreeView没有刷新的感觉?代码如下:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="tbTree.aspx.cs" Inherits="tbTree_tbTree" %><%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
    Namespace="System.Web.UI" TagPrefix="asp" %><!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>
    <link href="../Css/Css.css" rel="stylesheet" type="text/css" />
    
  <meta http-equiv="Pragma" content="no-cache" />
  <meta http-equiv="Cache-Control" content="no-cache" />
  <meta http-equiv="Expires" content="0" />
  <meta http-equiv="imagetoolbar" content="no">   
</head>
<body>
    <form id="form1" runat="server">
    <div>
            
        <asp:ScriptManager id="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel id="UpdatePanel1" runat="server">
        <ContentTemplate>
            <table cellpadding=0 cellspacing=0 border=1>
            <tr>
            <td valign=top align=left width="200">
            <div style=" OVERFLOW-Y: scroll;WIDTH: 50%;HEIGHT: 400px;BACKGROUND-COLOR: #6699cc">
                <asp:TreeView ID="TreeView1" runat="server" Width="183px" EnableTheming="True" ShowLines="True" OnSelectedNodeChanged="TreeView1_SelectedNodeChanged" NodeIndent="30">
                </asp:TreeView>
            </div>    
            </td>
            <td valign=top align=left width="200">
            <div style=" OVERFLOW-Y: scroll;WIDTH: 200px;HEIGHT: 400px">
                <asp:ListBox ID="ListBox1"  DataTextField="name" DataValueField="id" 
            runat="server" Height="400px" Width="200px" SelectionMode="Multiple"></asp:ListBox>
            </div>
            </td>
            
            <td>
                <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/images/105.png" OnClick="ImageButton1_Click" /><br><br><br>
                <asp:ImageButton ID="ImageButton2" runat="server" ImageUrl="~/images/101.png" OnClick="ImageButton2_Click" />
            </td>
            
            <td valign=top align=left width="200">
            <div style=" OVERFLOW-Y: scroll;WIDTH: 200px;HEIGHT: 400px">
                <asp:ListBox ID="ListBox2"  DataTextField="name" DataValueField="id" 
            runat="server" Height="400px" Width="200px" SelectionMode="Multiple"></asp:ListBox>
            </div>
            </td>
            </tr>
            </table>
            
            <table>
            <tr><td colspan=2><asp:Button ID="Button1" runat="server" Text="确定" OnClick="Button1_Click" /></td></tr>  
        </table> 
                             
        </ContentTemplate>
        <Triggers>
          <asp:AsyncPostBackTrigger ControlID="Button1" />   
          <asp:AsyncPostBackTrigger ControlID="ImageButton1" />
          <asp:AsyncPostBackTrigger ControlID="ImageButton2" />     
        </Triggers>
        </asp:UpdatePanel> 
                   
    </div>
    </form>
</body>
</html>
---------------------------
CS代码如下:using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;public partial class tbTree_tbTree : System.Web.UI.Page
{
    SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
             
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            // 定义数据库连接
            try
            {
                //初始化连接字符串
                conn.Open();
                SqlDataAdapter adp = new SqlDataAdapter("select * from tbTree", conn);
                DataSet ds = new DataSet();
                adp.Fill(ds);
                this.ViewState["ds"] = ds;
            }
            catch (Exception ex)
            {
                //Session["Error"] = ex.ToString();
                //Response.Redirect("../error.html");       //̀跳转程序的公共错误处理页面
            }
            finally
            {
                conn.Close();
            }
            //调用递归函数,完成树形结构的生成
            AddTree(0, (TreeNode)null);            bind("");            
        }
        
    }    public void bind(string searchStr)
    {
        string searchStr2 = searchStr;
        string strSql = "";
        if (searchStr2 == "")
        {
            strSql = "select users.id,name+' '+context as name from tbTree,users where tbTree.id = users.deptID";
        }
        else
        {
            strSql = "select users.id,name+' '+context as name from tbTree,users where tbTree.id = '" + Convert.ToInt32(searchStr2) + "' and tbTree.id = users.deptID";
        }
        SqlCommand cmd = new SqlCommand(strSql, conn);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        da.Fill(ds);
        this.ListBox1.DataSource = ds.Tables[0].DefaultView;
        this.ListBox1.DataBind();
    }    //递归添加树的节点
    public void AddTree(int ParentID, TreeNode pNode)
    {
        DataSet ds = (DataSet)this.ViewState["ds"];
        DataView dvTree = new DataView(ds.Tables[0]);
        //过滤ParentID,得到当前的所有子节点
        dvTree.RowFilter = "[PARENTID] = " + ParentID;        foreach (DataRowView Row in dvTree)
        {
            TreeNode Node = new TreeNode();
            if (pNode == null)
            {    //添加根节点
                Node.Text = Row["ConText"].ToString();
                Node.Value = Row["id"].ToString();
                TreeView1.Nodes.Add(Node);
                Node.Expanded = false;  //自动收缩
                AddTree(Int32.Parse(Row["ID"].ToString()), Node);    //再次递归
            }
            else
            {   //̀添加当前节点的子节点
                Node.Text = Row["ConText"].ToString();
                Node.Value = Row["id"].ToString();
                pNode.ChildNodes.Add(Node);
                Node.Expanded = false;  //自动收缩
                AddTree(Int32.Parse(Row["ID"].ToString()), Node);     //再次递归
            }
        }
    }    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
        bind(TreeView1.SelectedNode.Value);
        TreeView1.SelectedNode.Selected = false;     
    }

解决方案 »

  1.   

     <Triggers>
      <asp:AsyncPostBackTrigger ControlID="Button1" />   
      <asp:AsyncPostBackTrigger ControlID="ImageButton1" />
      <asp:AsyncPostBackTrigger ControlID="ImageButton2" />   
      </Triggers>
    ====
    去除上边的代码
    这3个button都已经包在里边了
    设置 triggers 也没用
      

  2.   

    <Triggers>
      <asp:AsyncPostBackTrigger ControlID="Button1" />   
      <asp:AsyncPostBackTrigger ControlID="ImageButton1" />
      <asp:AsyncPostBackTrigger ControlID="ImageButton2" />   
      </Triggers>这些去掉了,2个LISTBOX有刷新的感觉,而TreeView没有刷新的感觉
      

  3.   

    2个LISTBOX还是有刷新(抖动)的感觉,怎么办?
      

  4.   

    我只为UpdatePanel的UpdateMode属性设置为Conditional,因为这样才是真正不乱刷新的。你可以看msdn http://msdn.microsoft.com/zh-cn/library/bb386454(VS.90).aspx 中关于这个属性的描述。默认设置为Always,这虽然也是刷新了,但是编程比较傻瓜化。而设置为Conditional才是真正的不刷新,但是稍微要多一点编程知识。
      

  5.   

    2个LISTBOX有刷新的感觉 
    楼主你的话,是不是指的的其实没有刷新的,但是有那么一闪的感觉