我正在构建一个Web应用程序,它将具有多个表单页面,用于从数据库中提取数据并导出到excel。
为了节省我重现相同的代码以导出到excel,我已经制作了一个包含gridview的输出页面和一个onclick运行导出到excel代码的按钮。
我将sql查询或存储过程的结果从表单页面传递到输出页面,方法是将数据表存储在会话对象中并将其设置为gridview的数据源。
但是我不知道某些结果会有多大或者有多少用户会在任何时候使用这些表单,所以我预计会话对象不是最好的主意。
非常感谢任何想法,谢谢。
来自其中一个表单页面的C#代码
DataTable myDataTable = new DataTable();
string myConnectionString = //connectionstring text
SqlConnection myConnection = new SqlConnection(
ConfigurationManager.ConnectionStrings[myConnectionString].ConnectionString);
string mySQL = //built sql query
SqlDataAdapter myDataAdaptor = new SqlDataAdapter(mySQL,myConnection);
using(myDataAdaptor)
{
myDataAdaptor.Fill(myDataTable);
}
Session["Output"] = myDataTable;
Response.Redirect("output.aspx");
输出页面上的C#代码
protected void Page_Load(object sender, EventArgs e)
{
gvOutput.DataSource = Session["Output"];
gvOutput.DataBind();
}
答案 0 :(得分:0)
你基本上必须将你的值存储在页面,会话,缓存的范围之外,其中sessionid作为键,序列化和反序列化的值很少。
对于不太容易访问的页面会话是否公平,如果有经常访问的页面的这个数据的inproc会话怎么样?
这基本上是一个设计选择,应该根据页面上的流量,预测的数据大小等来考虑。
会话很珍贵,如果管理得不好,可能会影响性能。想象一下,随着应用程序的增长,您的查询会返回大量数据。
为了简短起见,如果您的页面访问不是很高,并且您存储的会话数据适合您的硬件会话,那么这是一个合理的选择。