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;
}
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;
}
<asp:AsyncPostBackTrigger ControlID="Button1" />
<asp:AsyncPostBackTrigger ControlID="ImageButton1" />
<asp:AsyncPostBackTrigger ControlID="ImageButton2" />
</Triggers>
====
去除上边的代码
这3个button都已经包在里边了
设置 triggers 也没用
<asp:AsyncPostBackTrigger ControlID="Button1" />
<asp:AsyncPostBackTrigger ControlID="ImageButton1" />
<asp:AsyncPostBackTrigger ControlID="ImageButton2" />
</Triggers>这些去掉了,2个LISTBOX有刷新的感觉,而TreeView没有刷新的感觉
楼主你的话,是不是指的的其实没有刷新的,但是有那么一闪的感觉