页面大量数据处理

reallylovesky 2009-03-11 06:09:03
我现在页面可查询多笔数据
一个Master 大概30多列Master为一个GridA
点选GridA任何一列后 在下面7个TAB(每个大概30多textbox)读出该行的详细资料

在上面7个TAB其中的一个Tab又有一个Master的GridB(属于GridA的详细资料)
点选GridB任何一列后 30多textbox读出该行的详细资料,和属于GridB的详细资料GridC

GridA,GridB,GridC和7个TAB来源不同的资料表,通过join起来!怎么样解决???怎么样提高页面速度????
形如:

GridA
-------
1
2

GridB
------
1.1
1.2
2.1
2.2


GridC
----
1.1.1
1.1.2
2.1.1
2.1.2



...全文
140 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用楼主 reallylovesky 的帖子:]
GridA,GridB,GridC和7个TAB来源不同的资料表,通过join起来!怎么样解决???怎么样提高页面速度???? [/Quote]

很普通的界面嘛。

例如你可以参考Scott Mitchell的入门系列中的:http://lidong.cnblogs.com/archive/2006/07/05/443207.html
以及其它类似的。主从表很容易完成。

只不过你是1个主表,7个从表。然后从表又有从表。稍微繁琐一点,但是技术上Scott Mitchell中演示的代码完全足够了。


至于怎样提高页面速度,你先实现功能界面才能提到速度问题嘛。因为你现在连如何实现功能都不知道,担心速度问题是杞人忧天。等你果真可以随便想出有好多种实现细节可以随便选择,你再来评论说速度问题吧。基本上,最直接的方法就是将页面进行片段缓存(使用ascx来分解界面功能模块,然后分别使用OutputCache)。
cyz9977 2009-03-13
  • 打赏
  • 举报
回复
好復雜~~~
pgameli 2009-03-12
  • 打赏
  • 举报
回复
lz说的确是有些困难
查询这么多数据,又想查询的快,不可能的
建议查询详细信息的时候给转到第二个页面更好

就像csdn这样,先把标题都显示出来,然后点标题的时候转到另外一个页面
syc958 2009-03-12
  • 打赏
  • 举报
回复
我觉得还是一次读完不是明智之举....第一次看到什么就读什么后续的要分到后续操作方面来做.....但是这样做效率也高不了太多,我觉得还是用一下缓存比较好....最好是生成xml...然后将缓存和xml文件关联起来....
reallylovesky 2009-03-12
  • 打赏
  • 举报
回复
页面数据改变怎么样,把他们Update到dateset里面???
zzxap 2009-03-12
  • 打赏
  • 举报
回复
[CODE=C#]
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

namespace HibernateTest
{
/**//// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Repeater Repeater1;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{
this.GetData();
}
}

Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/**//// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion


private void GetData()
{
SqlConnection con = new SqlConnection("server=(local);database=Northwind;uid=sa;pwd=;");
System.Data.SqlClient.SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Customers",con);
System.Data.SqlClient.SqlDataAdapter da1 =new SqlDataAdapter("SELECT * FROM ORDERS",con);
DataSet ds= new DataSet();
try
{
con.Open();
//将主表Customer添加到DataSet中
da.Fill(ds,"Customers");
//将子表Orders添加到DataSet中
da1.Fill(ds,"Orders");
//添加表Customer和表Orders之间的关系CustOrder;关联字段CustomerID
ds.Relations.Add("CustOrder",ds.Tables["Customers"].Columns["CustomerID"],ds.Tables["Orders"].Columns["CustomerID"]);

this.Repeater1.DataSource = ds;
this.Repeater1.DataBind();

}
catch(Exception ex)
{
throw ex;
}
finally
{
con.Close();
con.Dispose();
}
}
}
}

[/CODE]
zzxap 2009-03-12
  • 打赏
  • 举报
回复
[code=HTML]
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<!-- 父Repeater开始 -->
<asp:Repeater id="Repeater1" runat="server">
<itemtemplate>
<b>
<br>
CustomerID:
<%#Eval("CustomerID") %>
</b>
<!-- 子Repeater开始 -->
<asp:repeater id="childRepeater" runat="server"
          datasource='<%# ((DataRowView)Container.DataItem).Row.GetChildRows("CustOrder") %>'>
<itemtemplate>
<%#Eval("[\"ORDERID\"]")%>
<%--如果不是这样写的话,可能会出现DataBinding:“System.Data.DataRow”不包含名为“ORDERID”的属性--%>
<br>
</itemtemplate>
</asp:repeater>
<hr>
<!-- 子Repeater结束 -->
</itemtemplate>
</asp:Repeater>
<!-- 父Repeater结束 -->
</FONT>
</form>
</body>
</HTML>

[/CODE]
小宏 2009-03-12
  • 打赏
  • 举报
回复
......
reallylovesky 2009-03-12
  • 打赏
  • 举报
回复
但是存档的时候怎么办?
yagebu1983 2009-03-11
  • 打赏
  • 举报
回复
存储过程。。。
way106vip 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zzxap 的回复:]
不建议这么做,建议显示子表的时候转到另外一页。

我以前也这样做过,不过被否决了。
可以用一个HyperLinkField 点击这个HyperLinkField显示子表,重新绑定GridB

<asp:HyperLinkField DataNavigateUrlFields="classnum" DataNavigateUrlFormatString="~/addclass.aspx?classnum={0}" DataTextField="classnum" HeaderText="编号" />


Session("course") = GridView1.DataKeys(GridView1.SelectedIndex).Value

[/Quote]
建议学习楼上的
我也在学习中
zzxap 2009-03-11
  • 打赏
  • 举报
回复
不建议这么做,建议显示子表的时候转到另外一页。

我以前也这样做过,不过被否决了。
可以用一个HyperLinkField 点击这个HyperLinkField显示子表,重新绑定GridB

<asp:HyperLinkField DataNavigateUrlFields="classnum" DataNavigateUrlFormatString="~/addclass.aspx?classnum={0}" DataTextField="classnum" HeaderText="编号" />


Session("course") = GridView1.DataKeys(GridView1.SelectedIndex).Value
coursenum = GridView1.DataKeys(GridView1.SelectedIndex).Value 获取父表的id
Bindcourse() 绑定数据


readfuture 2009-03-11
  • 打赏
  • 举报
回复
是有些复杂
Teng_s2000 2009-03-11
  • 打赏
  • 举报
回复
确实是个考验啊

还必须一次全都显示,还得每个页面都要显示这些信息啊

62,267

社区成员

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

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

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

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