在会话变量中显示多个数据

时间:2012-06-18 08:57:08

标签: asp.net session webforms

在我的应用程序中,我从数据库中检索数据。在数据库中包含10条记录。但是当我在页面中显示记录时,它只显示一条记录。我想要显示所有10个记录的需要。我使用会话变量来存储和显示页面中的数据。我不希望任何控件绑定数据。我只想使用会话变量来存储和显示数据。下面我写代码。我知道会话存储只有一个值,但我希望会话存储多个值并显示多个数据。

.cs文件

protected void Page_Load(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection("Data Source=Aarambh;Initial Catalog=rebuild_technology;Integrated Security=True");
        con.Open();
        SqlCommand cmd = new SqlCommand("select * from content_managment ", con);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        da.Fill(ds);
        foreach (DataRow dr in ds.Tables[0].Rows)

        {
            Session["divhtml_heading1"] = dr["divhtml_content"].ToString();

        }
}

这里我在aspx页面显示数据。

源代码

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Home" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
 <% Response.Write(Session["divhtml_heading1"].ToString()); %>
</asp:Content>

2 个答案:

答案 0 :(得分:1)

我建议将所有数据库内容存储在Custom对象中,如

List<string> lstOfDivHtml = new List<string>();

将内容存储在foreach循环中,如

 foreach (DataRow dr in ds.Tables[0].Rows)
 {
    lstOfDivHtml.Add(dr["divhtml_content"].ToString());
 }

你在forloop&amp;中填充lstOfDivHtml然后在for循环之后将其设置为会话一次,如

Session["divhtml_heading1"] = lstOfDivHtml 

当您在页面上显示内容时,从Session&amp;中检索lstofDivHtml。将它显示在循环中

var list = Session["divhtml_heading1"] as List<string>; // now loop over 'list'.

P.S。

protected void Page_Load(object sender, EventArgs e)
    {
        //Define list
        List<string> lstOfDivHtml = new List<string>();  
        SqlConnection con = new SqlConnection("Data Source=Aarambh;Initial Catalog=rebuild_technology;Integrated Security=True");
        con.Open();
        SqlCommand cmd = new SqlCommand("select * from content_managment ", con);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        da.Fill(ds);
        foreach (DataRow dr in ds.Tables[0].Rows)
        {
          //add records from dr to lstOfDivHtml 
          lstOfDivHtml.Add(dr["divhtml_content"].ToString());
        }
  }

在页面标记或代码隐藏

<% 
var list = Session["divhtml_heading1"] as List<string>;
foreach(var item in  list )
{
 Response.Write(item); 
}
%> 

现在不能比这更具体了:)

答案 1 :(得分:0)

快速肮脏的方式是使用:

Session["divhtml_heading1"] &= dr["divhtml_content"].ToString();

追加行数据,而不是:

Session["divhtml_heading1"] = dr["divhtml_content"].ToString();

替换行数据。