【问题标题】:send datatable from a page to another one in asp.net在asp.net中将数据表从一个页面发送到另一个页面
【发布时间】:2013-11-13 12:41:53
【问题描述】:

我有一个从 sql 获取的数据表,在对每一行进行一些处理之后,我在数据表中添加一列来显示处理结果,然后我想将其发送到 asp.net 中的另一个页面,什么是最好的办法? 可以使用会话还是什么?

我用 session 试试,但我不确定它是否可以,因为很多人使用我的服务器。

        DataTable dt = new DataTable();
        dt.Columns.Add("img", typeof(string));
        dt.Columns.Add("soratvaziat", typeof(string));
        dt.Columns.Add("shomaregharardad", typeof(string));
        dt.Columns.Add("sharh", typeof(string));
        dt.Columns.Add("eghdam", typeof (Boolean));


        DataRow dtrow = dt.NewRow();    // Create New Row
        dtrow["img"] = "accepted.png";            //Bind Data to Columns
        dtrow["soratvaziat"] = "SureshDasari";
        dtrow["shomaregharardad"] = "B.Tech";
        dtrow["sharh"] = "Chennai";
        dtrow["eghdam"] = true;
        dt.Rows.Add(dtrow);

        dtrow = dt.NewRow();               // Create New Row
        dtrow["img"] = "attention.png";               //Bind Data to Columns
        dtrow["soratvaziat"] = "MadhavSai";
        dtrow["shomaregharardad"] = "MBA";
        dtrow["sharh"] = "Nagpur";
        dtrow["eghdam"] = true;

        dt.Rows.Add(dtrow);

        dtrow = dt.NewRow();              // Create New Row
        dtrow["img"] = "canceled.png";              //Bind Data to Columns
        dtrow["soratvaziat"] = "MaheshDasari";
        dtrow["shomaregharardad"] = "B.Tech";
        dtrow["sharh"] = "Nuzividu";
        dtrow["eghdam"] = true;

        dt.Rows.Add(dtrow);

        dtrow = dt.NewRow();              // Create New Row
        dtrow["img"] = "accepted.png";              //Bind Data to Columns
        dtrow["soratvaziat"] = "Mahendra";
        dtrow["shomaregharardad"] = "CA";
        dtrow["sharh"] = "Guntur";
        dtrow["eghdam"] = false;

        dt.Rows.Add(dtrow);
        RadGrid1.DataSource = dt;
        RadGrid1.DataBind();
        Session["dt"] = dt;

【问题讨论】:

  • 您无法在 SQL 中为新行进行插入,而在另一个页面中对所有插入的行进行另一次查询?当您有数据库时,这是最佳选择。比在会话中存储大量数据更好地为单个用户进行多次插入和选择
  • 您是否在数据表中保留客户特定的数据?
  • 不要在会话中存储数据表。坏坏坏。太臃肿,太重,如果您在会话中存储大型对象,那么您需要重新考虑您的方法。

标签: c# asp.net session web


【解决方案1】:

我认为您可以使用 PreviousPage 属性来做到这一点。这允许您从将控制发送到当前加载的页面的页面访问变量。您需要在 .ASPX 页面指令中设置一些内容,然后使用

PreviousPage.Something

这样做。我会将数据表设置为属性并在当前页面上引用该属性。

进一步阅读:

Passing values across ASPX pages

【讨论】:

    【解决方案2】:

    如果会话未启用,则您可以通过上下文发送数据

    Context.Items.Add("context name", DataTable);
    

    你可以从另一个页面访问它

    DataTable dt = (DataTable)Context.Items["context name"];
    

    【讨论】:

      【解决方案3】:

      1- 创建一个类

      2- 在您的班级中添加public static DataTable dataTable

      3- 然后将你的 dataTable 变量放入其中;

      4- 你可以从任何地方恢复它。

      【讨论】:

      • 这比另一个答案中建议的Cache 还要糟糕。 static 也是应用程序范围的,因此在所有用户之间共享,但您也引入了线程问题。
      • @EmanuelPirovano 如果是,那你为什么不投反对票呢?或者,如果您认为可以改进,请提供该建议。
      猜你喜欢
      • 1970-01-01
      • 2020-08-16
      • 2013-01-24
      • 2014-01-12
      • 2017-05-22
      • 2016-03-19
      • 2021-01-30
      • 2014-05-15
      • 1970-01-01
      相关资源
      最近更新 更多