(在线等!!!!) 框架中 局部刷新

燥动的心 2008-07-07 09:48:51
在框架中,左边有一颗树(还有其他内容),在右边增加一个树节点后,在左边要及时显示的.
因为要保持左边某些节点状态,所以左边只能局部刷新.
请问大家怎么刷新??
...全文
511 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
燥动的心 2008-07-09
  • 打赏
  • 举报
回复
[Quote=引用 38 楼 brz97 的回复:]
呵呵,建议楼主去看看
http://blog.csdn.net/brz97/archive/2008/07/01/2600097.aspx
[/Quote]

太菜,看不懂.
brz97 2008-07-08
  • 打赏
  • 举报
回复
燥动的心 2008-07-08
  • 打赏
  • 举报
回复
用JS写这样段代码太难了.
燥动的心 2008-07-08
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 brz97 的回复:]
呵呵,建议楼主还是用javascript中的ajax来做吧,微软的ajax.net很让你讨厌的
[/Quote]

现在功能已经出来了.

我用的是updatePanel.
如果用javascript中的ajax,我估计我做不出来.
因为要生成这样一段代码:

<table cellpadding="0" cellspacing="0" style="border-width:0;">
<tr>
<td><div style="width:20px;height:1px"></div></td><td><a id="TreeView2n12" href="javascript:TreeView_ToggleNode(TreeView2_Data,12,TreeView2n12,' ',TreeView2n12Nodes)"><img src="/PES.CMS.Web/WebResource.axd?d=i3cF8JjLUc0YN7sa1W4dBIrVplO_6sEf_y0HXesbqQA1&t=633441138476093750" alt="展开 演示组织机构" style="border-width:0;" /></a></td><td><a href="OR/OrganiseList.aspx?OrganiseFatherID=16&OrganiseFatherName=%e6%bc%94%e7%a4%ba%e7%bb%84%e7%bb%87%e6%9c%ba%e6%9e%84" target="ContentIframe" onclick="javascript:TreeView_SelectNode(TreeView2_Data, this,'TreeView2t12');" id="TreeView2t12i" tabindex="-1"><img src="../../Images/Manage/tree/bole.PNG" alt="组织机构" style="border-width:0;" /></a></td><td class="TreeView2_1" style="white-space:nowrap;"><a class="TreeView2_0" href="OR/OrganiseList.aspx?OrganiseFatherID=16&OrganiseFatherName=%e6%bc%94%e7%a4%ba%e7%bb%84%e7%bb%87%e6%9c%ba%e6%9e%84" target="ContentIframe" onclick="javascript:TreeView_SelectNode(TreeView2_Data, this,'TreeView2t12');" id="TreeView2t12">演示组织机构</a></td>
</tr>
</table>
heerxiong 2008-07-08
  • 打赏
  • 举报
回复
用ajax
brz97 2008-07-08
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 pj100 的回复:]
用ajax不就要定时取回发了吗?
那样服务器负担会不会太大了.
[/Quote]
updatepanel难道不用回发吗????而且每次回发都是整页回发,服务器负担更大
brz97 2008-07-08
  • 打赏
  • 举报
回复
呵呵,建议楼主还是用javascript中的ajax来做吧,微软的ajax.net很让你讨厌的
燥动的心 2008-07-08
  • 打赏
  • 举报
回复
用ajax不就要定时取回发了吗?
那样服务器负担会不会太大了.
Magic_YJL 2008-07-08
  • 打赏
  • 举报
回复
劝楼主还是用Ajax吧,呵呵
燥动的心 2008-07-08
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 truelove12 的回复:]
不知道楼主所说的树是asp.net的treeview控件,还是javascript的树,这个你得说清楚啊。
[/Quote]

前面我有说是treeview 啊.
qwertxp 2008-07-08
  • 打赏
  • 举报
回复
框架就搞定了,iframe。
yagebu1983 2008-07-08
  • 打赏
  • 举报
回复
局部刷新用ajax可以的!!!
xuan.ye 2008-07-08
  • 打赏
  • 举报
回复
单类实体:
public class Sys_Function
{
OracleData data=null;
public Sys_Function()
{

}
#region Model
private string _id;
private string _Name;
private string _ParentID;
private string _url;
private int _OrderId;
private string _PicUrl;
private string _everyone;
/// <summary>
/// 编号
/// </summary>
public string ID
{
get { return _id; }
set { _id = value; }
}
/// <summary>
/// 模块名称
/// </summary>
public string Name
{
get { return _Name; }
set { _Name = value; }
}
/// <summary>
/// 父编号
/// </summary>
public string ParentId
{
get { return _ParentID; }
set { _ParentID = value; }
}
/// <summary>
/// 功能地址
/// </summary>
public string Url
{
get { return _url; }
set { _url = value; }
}
/// <summary>
/// 排序
/// </summary>
public int OrderID
{
get { return _OrderId; }
set { _OrderId = value; }
}
/// <summary>
/// 菜单图片地址
/// </summary>
public string PicUrl
{
get { return _PicUrl; }
set { _PicUrl = value; }
}
public string EveryOne
{
get { return _everyone; }
set { _everyone = value; }
}
#endregion
/// <summary>
/// 增加一条数据
/// </summary>
public int Add()
{
data=new OracleData();
StringBuilder strSql=new StringBuilder();
strSql.Append("insert into SYS_FUNCTION(");
strSql.Append("ID,NAME,PARENTID,URL,EVERYONE");
strSql.Append(")");
strSql.Append(" values (");
strSql.Append("'"+ID+"',");
strSql.Append("'"+Name+"',");
strSql.Append("'"+ParentId+"',");
strSql.Append("'"+Url+"',");
strSql.Append("'"+EveryOne+"'");
strSql.Append(")");
return data.ExecuteSQL(strSql.ToString());
}

/// <summary>
/// 更新一条数据
/// </summary>
public int Update()
{
data = new OracleData();
StringBuilder strSql=new StringBuilder();
strSql.Append("update SYS_FUNCTION set ");
strSql.Append("NAME='"+Name+"',");
strSql.Append("URL='"+Url+"',");
strSql.Append("EVERYONE='"+EveryOne+"'");
strSql.Append(" where ID='"+ID+"'");
return data.ExecuteSQL(strSql.ToString());
}

/// <summary>
/// 删除一条数据
/// </summary>
public int Delete(string ID)
{
data=new OracleData();
StringBuilder strSql=new StringBuilder();
strSql.Append("delete SYS_FUNCTION ");
strSql.Append(" where ID='"+ID+"'");
return data.ExecuteSQL(strSql.ToString());
}

/// <summary>
/// 得到一个对象实体
/// </summary>
public void GetModel(string ID)
{
data = new OracleData();
StringBuilder strSql=new StringBuilder();
strSql.Append("select ");
strSql.Append("ID,NAME,PARENTID,URL,ORDERID,PICURL,EVERYONE ");
strSql.Append(" from SYS_FUNCTION ");
strSql.Append(" where ID='"+ID+"'");
DataSet ds=data.GetDataSet(strSql.ToString());
if(ds.Tables[0].Rows.Count>0)
{
Name=ds.Tables[0].Rows[0]["NAME"].ToString();
ParentId=ds.Tables[0].Rows[0]["PARENTID"].ToString();
Url=ds.Tables[0].Rows[0]["URL"].ToString();
if(ds.Tables[0].Rows[0]["ORDERID"].ToString()!="")
{
OrderID=int.Parse(ds.Tables[0].Rows[0]["ORDERID"].ToString());
}
PicUrl=ds.Tables[0].Rows[0]["PICURL"].ToString();
EveryOne=ds.Tables[0].Rows[0]["EVERYONE"].ToString();
}
}
/// <summary>
/// 获得数据列表
/// </summary>
public DataTable GetList(string strWhere)
{
data = new OracleData();
StringBuilder strSql=new StringBuilder();
strSql.Append("select ID,NAME,PARENTID,URL,ORDERID,PICURL,EVERYONE ");
strSql.Append(" FROM SYS_FUNCTION ");
if(strWhere.Trim()!="")
{
strSql.Append(" where "+strWhere);
}
return data.GetDataTable(strSql.ToString());
}
/// <summary>
/// 递归行政区号
/// </summary>
/// <param name="node">初始化节点</param>
/// <param name="sParentID">父节点编号</param>
public void InitTreeNode(TreeNode node, string sParentID)
{
DataView dvw = new DataView();
TreeNode nodTemp;
dvw.Table = GetList("ParentID='" + sParentID + "'");
foreach (DataRowView drv in dvw)
{
nodTemp = new TreeNode();
nodTemp.Value = drv["id"].ToString();
nodTemp.Text = drv["Name"].ToString();
nodTemp.ToolTip = drv["url"].ToString();
DataTable sdt = GetList("ParentID='" + nodTemp.Value + "'");
if (sdt.Rows.Count > 0)
{
nodTemp.ImageUrl = "~/Admin/images/jia.gif";
}
else
{
nodTemp.ImageUrl = "~/Admin/images/jian.gif";
}
node.ChildNodes.Add(nodTemp);
//InitTreeNode(nodTemp, nodTemp.Value);
}
}
}
  • 打赏
  • 举报
回复
不知道楼主所说的树是asp.net的treeview控件,还是javascript的树,这个你得说清楚啊。
xuan.ye 2008-07-08
  • 打赏
  • 举报
回复
cs:
public partial class Admin_Function : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Sys_Function fun = new Sys_Function();
TreeNode node = new TreeNode();
node.Value = "-1";
node.Text = "功能模块";
TreeView1.Nodes.Add(node);
fun.InitTreeNode(node,node.Value);
}
}
protected void btAdd_Click(object sender, EventArgs e)
{
/**********基本验证*************/
if (TreeView1.SelectedNode == null)
{
ClientScript.RegisterClientScriptBlock(this.GetType(), "", "alert('请选择一个结点!')", true);
return;
}
string strError = "";
if (txtname.Text.Trim() == "")
{
strError += "功能名称不能为空!\\n";
}
//if (txturl.Text.Trim() == "")
//{
// strError += "功能路径不能为空!\\n";
//}
if (strError != "")
{
ClientScript.RegisterClientScriptBlock(this.GetType(), "", "alert('" + strError + "')", true);
return;
}
/**********基本验证结束*************/
Sys_Function fun = new Sys_Function();
Publicfun pf = new Publicfun();
string TId = pf.GetID();
string Tname = txtname.Text;
string Turl = txturl.Text;
string everyone = this.cbeveryOne.SelectedItem.Value;

fun.ID = TId;
fun.ParentId = this.TreeView1.SelectedNode.Value;
fun.Name = Tname;
fun.Url = Turl;
fun.EveryOne = everyone;
int a = fun.Add();
if (a > 0)
{
TreeView1.SelectedNode.ChildNodes.Clear();
TreeView1.SelectedNode.ImageUrl = "";
fun.InitTreeNode(TreeView1.SelectedNode, TreeView1.SelectedNode.Value);
TreeView1.SelectedNode.ExpandAll();
txtname.Text = "";
txturl.Text = "";
}
}
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
tableRep.Visible = false;
if (TreeView1.SelectedNode.ChildNodes.Count > 0)
{
return;
}
Sys_Function fun = new Sys_Function();
DataTable dt = fun.GetList(" parentId='" + this.TreeView1.SelectedNode.Value + "'");
if (dt.Rows.Count > 0)
{
TreeView1.SelectedNode.ImageUrl = "";
TreeView1.SelectedNode.ChildNodes.Clear();
fun.InitTreeNode(this.TreeView1.SelectedNode, this.TreeView1.SelectedNode.Value);
TreeView1.SelectedNode.ExpandAll();
}
}
protected void lbrep_Click(object sender, EventArgs e)
{
if (TreeView1.SelectedNode == null)
{
ClientScript.RegisterClientScriptBlock(this.GetType(), "", "alert('请选中一个结点!')", true);
return;
}
if (TreeView1.SelectedNode.Value == "-1")
{
ClientScript.RegisterClientScriptBlock(this.GetType(), "", "alert('根结点不能修改!')", true);
return;
}
this.tableRep.Visible = true;
txtrepname.Text = this.TreeView1.SelectedNode.Text;
txtrepUrl.Text = this.TreeView1.SelectedNode.ToolTip;
Sys_Function fun = new Sys_Function();
this.cbrep.SelectedValue = fun.GetList("id='" + TreeView1.SelectedNode.Value + "'").Rows[0]["EVERYONE"].ToString();
}
protected void btdel_Click(object sender, EventArgs e)
{
if (TreeView1.SelectedNode == null)
{
ClientScript.RegisterClientScriptBlock(this.GetType(), "", "alert('请选择一个结点!')", true);
return;
}
if (TreeView1.SelectedNode.Value == "-1")
{
ClientScript.RegisterClientScriptBlock(this.GetType(), "", "alert('根结点不能删除!')", true);
return;
}
if (TreeView1.SelectedNode.ChildNodes.Count > 0)
{
ClientScript.RegisterClientScriptBlock(this.GetType(), "", "alert('存在子节点,不能删除!')", true);
return;
}
Sys_Mapping map = new Sys_Mapping();
DataTable dt= map.GetList("funid='" + this.TreeView1.SelectedNode.Value+"'");
if (dt.Rows.Count > 0)
{
ClientScript.RegisterClientScriptBlock(this.GetType(),"","alert('内网已映射!不能删除!')",true);
return;
}
Sys_OutMapping outMap = new Sys_OutMapping();
dt = outMap.GetList("funid='"+TreeView1.SelectedNode.Value+"'");
if (dt.Rows.Count>0)
{
ClientScript.RegisterClientScriptBlock(this.GetType(), "", "alert('外网已映射!不能删除!')", true);
return;
}
//sys
Sys_Function fun = new Sys_Function();
int a = fun.Delete(this.TreeView1.SelectedNode.Value);
if (a > 0)
{
TreeView1.SelectedNode.Parent.Select();
TreeView1.SelectedNode.ChildNodes.Clear();
fun.InitTreeNode(TreeView1.SelectedNode, TreeView1.SelectedNode.Value);
}
}
protected void btrep_Click(object sender, EventArgs e)
{
/*********基本验证**************/
string strError = "";
if (txtrepname.Text.Trim() == "")
{
strError += "模块名称不能为空!\\n";
}
//if (txtrepUrl.Text.Trim() == "")
//{
// strError += "模块路径不能为空!\\n";
//}
if (strError != "")
{
ClientScript.RegisterClientScriptBlock(this.GetType(), "", "alert('" + strError + "')", true);
return;
}

/*********基本验证结束**************/
Sys_Function fun = new Sys_Function();
fun.ID = this.TreeView1.SelectedNode.Value;
fun.Name = txtrepname.Text;
fun.Url = txtrepUrl.Text;
fun.EveryOne = cbrep.SelectedItem.Value;
int a = fun.Update();

if (a > 0)
{
TreeView1.SelectedNode.Text = this.txtrepname.Text;
TreeView1.SelectedNode.ToolTip = this.txtrepUrl.Text;
this.tableRep.Visible = false;
}
}
}
xuan.ye 2008-07-08
  • 打赏
  • 举报
回复
在操作treeview的时候不需要添加整个树
一开始只递归两层即可
也不要使用iframe

html:
<table style="width: 100%">
<tr>
<td valign="top" style="width: 30%">
<asp:Panel ID="Panel1" runat="server" Width="100%" Height="610px" ScrollBars="both">
<asp:TreeView ID="TreeView1" runat="server" Font-Size="10pt" ExpandDepth="1" SelectedNodeStyle-BackColor="AliceBlue" OnSelectedNodeChanged="TreeView1_SelectedNodeChanged">
<SelectedNodeStyle BackColor="AliceBlue" />
</asp:TreeView>
</asp:Panel>
</td>
<td width="60%" valign="top">
<asp:Panel ID="Panel2" runat="server" Width="100%" Height="100%">
<table style="width: 95%">
<tr>
<td>
<fieldset><legend>添加/删除</legend>
<table style="width: 87%">
<tr>
<td align="right" width="40%">
模块名称:</td>
<td width="60%">
<asp:TextBox ID="txtname" runat="server" Width="200px"></asp:TextBox></td>
</tr>
<tr>
<td align="right">
模块路径:</td>
<td>
<asp:TextBox ID="txturl" runat="server" Width="200px"></asp:TextBox></td>
</tr>
<tr>
<td align="right">
</td>
<td>
<%--<asp:CheckBox ID="cbeveryOne" runat="server" Text="everyone" />--%>
<asp:RadioButtonList ID="cbeveryOne" runat="server" RepeatDirection="Horizontal">
<asp:ListItem Text="不限" Value="" Selected="true"></asp:ListItem>
<asp:ListItem Text="everyone" Value="everyone"></asp:ListItem>
<asp:ListItem Text="outSide" Value="outSide"></asp:ListItem>
</asp:RadioButtonList></td>
</tr>
<tr>
<td align="right">
</td>
<td>
<asp:Button ID="btAdd" runat="server" Text="添 加" OnClick="btAdd_Click" /> 
<asp:Button ID="btdel" runat="server" OnClientClick="return confirm('确定要删除么?')" Text="删 除" OnClick="btdel_Click"/></td>
</tr>
</table>
</fieldset>
</td>
</tr></table><table width="100%">
<tr><td>

<fieldset><legend>
<asp:LinkButton ID="lbrep" runat="server" OnClick="lbrep_Click">我要修改</asp:LinkButton></legend>
<table width="100%" id="tableRep" runat="server" visible="false">
<tr>
<td align="right">
模块名称:</td>
<td>
<asp:TextBox ID="txtrepname" runat="server" Width="200px"></asp:TextBox></td>
</tr>
<tr><td align="right">
模块路径:</td>
<td>
<asp:TextBox ID="txtrepUrl" runat="server" Width="200px"></asp:TextBox></td>
</tr>
<tr>
<td align="right">
</td>
<td>
<asp:RadioButtonList ID="cbrep" runat="server" RepeatDirection="Horizontal">
<asp:ListItem Text="不限" Value=""></asp:ListItem>
<asp:ListItem Text="everyone" Value="everyone"></asp:ListItem>
<asp:ListItem Text="outSide" Value="outSide"></asp:ListItem>
</asp:RadioButtonList>
<%-- <asp:CheckBox ID="cbrep" runat="server" Text="everyone" />--%></td>
</tr>
<tr><td></td>
<td>
<asp:Button ID="btrep" runat="server" Text="修 改" OnClick="btrep_Click"/></td>
</tr>
</table></fieldset>

</td></tr></table></asp:Panel>
</td>
</tr>
</table>
燥动的心 2008-07-08
  • 打赏
  • 举报
回复
感觉用js很难实现.
用ajax 怎么做,有谁给个解决方案!
燥动的心 2008-07-08
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 qq22345111 的回复:]
用ajax
把你的树的节点写到xml里面去
然后树的状态使用JS控制
在把整个框架的大概设定号
至于点击后局部刷新..使用一个异步传参
把左边树节点做为参数传递给右方,把右面坐为一个单独页面
[/Quote]

能说得详细一点吗?

还有用js 来增加节点估计做不出来.
出成的代码看不懂.好复杂.

生成源码例如:
<table cellpadding="0" cellspacing="0" style="border-width:0;">
<tr>
<td><div style="width:20px;height:1px"></div></td><td><a id="TreeView2n12" href="javascript:TreeView_ToggleNode(TreeView2_Data,12,TreeView2n12,' ',TreeView2n12Nodes)"><img src="/PES.CMS.Web/WebResource.axd?d=i3cF8JjLUc0YN7sa1W4dBIrVplO_6sEf_y0HXesbqQA1&t=633441138476093750" alt="展开 演示组织机构" style="border-width:0;" /></a></td><td><a href="OR/OrganiseList.aspx?OrganiseFatherID=16&OrganiseFatherName=%e6%bc%94%e7%a4%ba%e7%bb%84%e7%bb%87%e6%9c%ba%e6%9e%84" target="ContentIframe" onclick="javascript:TreeView_SelectNode(TreeView2_Data, this,'TreeView2t12');" id="TreeView2t12i" tabindex="-1"><img src="../../Images/Manage/tree/bole.PNG" alt="组织机构" style="border-width:0;" /></a></td><td class="TreeView2_1" style="white-space:nowrap;"><a class="TreeView2_0" href="OR/OrganiseList.aspx?OrganiseFatherID=16&OrganiseFatherName=%e6%bc%94%e7%a4%ba%e7%bb%84%e7%bb%87%e6%9c%ba%e6%9e%84" target="ContentIframe" onclick="javascript:TreeView_SelectNode(TreeView2_Data, this,'TreeView2t12');" id="TreeView2t12">演示组织机构</a></td>
</tr>
</table>
xhan2000 2008-07-08
  • 打赏
  • 举报
回复
js动态操作node吧,有点麻烦
qq22345111 2008-07-08
  • 打赏
  • 举报
回复
用ajax
把你的树的节点写到xml里面去
然后树的状态使用JS控制
在把整个框架的大概设定号
至于点击后局部刷新..使用一个异步传参
把左边树节点做为参数传递给右方,把右面坐为一个单独页面
加载更多回复(19)

62,087

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧