各位大侠, 麻烦帮忙看一下我的设计是使用AJAX从数据库中调用数据,来实现无限级别的菜单树,但是目前遇到两个问题
第一个:每次点击菜单树,刷新后,都返回页面顶端,怎样刷新后还固定在选择前的位置(使用DIV+CSS的,没有用iframe,由于要使用点击的事件,可能刷新无法避免)第二个问题,当菜单树多次点击之后,大约在30多次之后,会出现反映缓慢的问题,这个问题.
以下是原代码, 麻烦大哥们帮忙看看,小弟分不多55555555555555555,不好意思啊.---------------------------------------aspx文件--------------------------
<form id="form1" runat="server">
<div class="container">
<div class="MenuTree">
<asp:TreeView ID="TreeView1" runat="server" EnableViewState="true" ImageSet="BulletedList" ExpandDepth="0" Font-Size="Medium" OnTreeNodePopulate="TreeView1_TreeNodePopulate" OnSelectedNodeChanged="Select_Change" OnTreeNodeExpanded="TreeNode_Expanded" HoverNodeStyle-CssClass="TreeHoverCss" >
<ParentNodeStyle Font-Bold="False" />
<HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" />
<SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False" HorizontalPadding="0px"
VerticalPadding="0px" />
<NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black" HorizontalPadding="5px"
NodeSpacing="0px" VerticalPadding="1px" />
</asp:TreeView>
</div>
<div class="content">
<asp:Label id="Message" runat="server"/>
<asp:Label id="Message1" runat="server"/>
<asp:Image ID="Image1" runat="server" />
</div>
</div>
</form>------------------------------------------cs文件---------------------------------------------------------- void Page_Load()
{
if (!Page.IsPostBack)
PopulateTopNodes();
} ///-------------------------构建AJAX菜单部分-------------------------------------------------------------------------
/// <summary>
/// Get the top level nodes (nodes with a null ParentId)
/// </summary>
private void PopulateTopNodes()
{
string selectCommand = "SELECT MID,PID,Content FROM " + DataName + " WHERE PID =" + "-1";
string conString = WebConfigurationManager.ConnectionStrings["ET_DataBaseConnectionString"].ConnectionString;
SqlDataAdapter dad = new SqlDataAdapter(selectCommand, conString);
DataTable dtblMessages = new DataTable();
dad.Fill(dtblMessages); foreach (DataRow row in dtblMessages.Rows)
{
TreeNode newNode = new TreeNode(row["Content"].ToString(), row["MID"].ToString());
newNode.PopulateOnDemand = true;
newNode.SelectAction = TreeNodeSelectAction.SelectExpand;
TreeView1.Nodes.Add(newNode);
} dtblMessages.Dispose();
} /// <summary>
/// Get the child nodes of the expanded node
/// </summary>
protected void TreeView1_TreeNodePopulate(object sender, TreeNodeEventArgs e)
{
string selectCommand = "SELECT MID,PID,Content FROM "+ DataName +" WHERE PID=@PID";
string selectCommand2 = "SELECT LID,U1,U2,U3,Content FROM " + DataName + " WHERE Content=@Content";
string conString = WebConfigurationManager.ConnectionStrings["ET_DataBaseConnectionString"].ConnectionString;
SqlDataAdapter dad = new SqlDataAdapter(selectCommand, conString);
SqlDataAdapter dad2 = new SqlDataAdapter(selectCommand2, conString);
dad.SelectCommand.Parameters.AddWithValue("@PID", e.Node.Value);
dad2.SelectCommand.Parameters.AddWithValue("@Content", e.Node.Text);
DataTable dtblMessages = new DataTable();
dad.Fill(dtblMessages);
dad2.Fill(dtblUrl); foreach (DataRow row in dtblMessages.Rows)
{
TreeNode newNode = new TreeNode(row["Content"].ToString(), row["MID"].ToString());
newNode.PopulateOnDemand = true;
newNode.SelectAction = TreeNodeSelectAction.SelectExpand;
e.Node.ChildNodes.Add(newNode);
} dad.Dispose();
dad2.Dispose();
dtblMessages.Dispose();
}
protected void Select_Change(Object sender, EventArgs e)
{
SetupURL(TreeView1.SelectedNode.Text);
}
含泪跪求中,折腾一天多了,5555555555555555555555555555555
第一个:每次点击菜单树,刷新后,都返回页面顶端,怎样刷新后还固定在选择前的位置(使用DIV+CSS的,没有用iframe,由于要使用点击的事件,可能刷新无法避免)第二个问题,当菜单树多次点击之后,大约在30多次之后,会出现反映缓慢的问题,这个问题.
以下是原代码, 麻烦大哥们帮忙看看,小弟分不多55555555555555555,不好意思啊.---------------------------------------aspx文件--------------------------
<form id="form1" runat="server">
<div class="container">
<div class="MenuTree">
<asp:TreeView ID="TreeView1" runat="server" EnableViewState="true" ImageSet="BulletedList" ExpandDepth="0" Font-Size="Medium" OnTreeNodePopulate="TreeView1_TreeNodePopulate" OnSelectedNodeChanged="Select_Change" OnTreeNodeExpanded="TreeNode_Expanded" HoverNodeStyle-CssClass="TreeHoverCss" >
<ParentNodeStyle Font-Bold="False" />
<HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" />
<SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False" HorizontalPadding="0px"
VerticalPadding="0px" />
<NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black" HorizontalPadding="5px"
NodeSpacing="0px" VerticalPadding="1px" />
</asp:TreeView>
</div>
<div class="content">
<asp:Label id="Message" runat="server"/>
<asp:Label id="Message1" runat="server"/>
<asp:Image ID="Image1" runat="server" />
</div>
</div>
</form>------------------------------------------cs文件---------------------------------------------------------- void Page_Load()
{
if (!Page.IsPostBack)
PopulateTopNodes();
} ///-------------------------构建AJAX菜单部分-------------------------------------------------------------------------
/// <summary>
/// Get the top level nodes (nodes with a null ParentId)
/// </summary>
private void PopulateTopNodes()
{
string selectCommand = "SELECT MID,PID,Content FROM " + DataName + " WHERE PID =" + "-1";
string conString = WebConfigurationManager.ConnectionStrings["ET_DataBaseConnectionString"].ConnectionString;
SqlDataAdapter dad = new SqlDataAdapter(selectCommand, conString);
DataTable dtblMessages = new DataTable();
dad.Fill(dtblMessages); foreach (DataRow row in dtblMessages.Rows)
{
TreeNode newNode = new TreeNode(row["Content"].ToString(), row["MID"].ToString());
newNode.PopulateOnDemand = true;
newNode.SelectAction = TreeNodeSelectAction.SelectExpand;
TreeView1.Nodes.Add(newNode);
} dtblMessages.Dispose();
} /// <summary>
/// Get the child nodes of the expanded node
/// </summary>
protected void TreeView1_TreeNodePopulate(object sender, TreeNodeEventArgs e)
{
string selectCommand = "SELECT MID,PID,Content FROM "+ DataName +" WHERE PID=@PID";
string selectCommand2 = "SELECT LID,U1,U2,U3,Content FROM " + DataName + " WHERE Content=@Content";
string conString = WebConfigurationManager.ConnectionStrings["ET_DataBaseConnectionString"].ConnectionString;
SqlDataAdapter dad = new SqlDataAdapter(selectCommand, conString);
SqlDataAdapter dad2 = new SqlDataAdapter(selectCommand2, conString);
dad.SelectCommand.Parameters.AddWithValue("@PID", e.Node.Value);
dad2.SelectCommand.Parameters.AddWithValue("@Content", e.Node.Text);
DataTable dtblMessages = new DataTable();
dad.Fill(dtblMessages);
dad2.Fill(dtblUrl); foreach (DataRow row in dtblMessages.Rows)
{
TreeNode newNode = new TreeNode(row["Content"].ToString(), row["MID"].ToString());
newNode.PopulateOnDemand = true;
newNode.SelectAction = TreeNodeSelectAction.SelectExpand;
e.Node.ChildNodes.Add(newNode);
} dad.Dispose();
dad2.Dispose();
dtblMessages.Dispose();
}
protected void Select_Change(Object sender, EventArgs e)
{
SetupURL(TreeView1.SelectedNode.Text);
}
含泪跪求中,折腾一天多了,5555555555555555555555555555555
解决方案 »
- ExecuteCommand一直返回-1
- 网站速度问题
- js绑定Datagrid
- asp.net中对密码进行md5加密1
- 急~~~求救
- asp高手进来帮我一下,一般水平的也来看看
- 关于数据库主键的问题 着急!!!!!!!!!!!!
- iis .netframework已经安装了,为什么我的网站在这台机器上仍然不能运行?输入127.0.0.1,显示出来default.aspx的源代码了
- 高分求救?
- 在ADO中的Like的任何匹配项是"*",在ADO。NET中是"%"吗?在Like查找中,查询的字符串匹配大小写吗,就是ABCD和abcd一样吗?
- 做项目,没有思路。也不想写代码怎么办
- asp.net from提交获取
还是用了submitbutton或asp button?如果是后者,执行完客户端click事件后,加个return false;
取消向服务器提交