簡體   English   中英

如何在回發ASP.NET之間的列表框中保留值

[英]How to retain values in my listbox between postbacks ASP.NET

我對asp.net相當陌生,對您的幫助將不勝感激。 該程序非常簡單,我有兩個網頁,一個包含一個列表框,另一個包含一個文本框。 該程序僅用於將項目從另一個頁面添加到列表框中。 我在WebForm1上的代碼,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace TestAppState
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)    
            {
                string field1 = (string)(Session["id"]);
                ListBox1.Items.Add(field1);        
            }
            else
            {
            }
        }

        protected void btnAdd_Click(object sender, EventArgs e)
        {
            Response.Redirect("WebForm2.aspx");
        }
    }
}

WebForm2上的代碼

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Caching;

namespace TestAppState
{
    public partial class WebForm2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            Application["id"] = txtID.Text;
            Response.Redirect("WebForm1.aspx");
        }
    }
}

你快到了。 在btn_AddClick事件中,您需要找到所有已選擇的ListBox項並將其值保存到會話中。 您可以采用多種格式來執行此操作,但是用逗號分隔的簡單列表可能會很好。

在WebForm2上的Page_Load事件中,您可以讀取該會話值,或者直接將數據與該會話值綁定到文本框中,或者執行需要做的任何事來操縱數據。

在第二種形式的代碼后面,您還可以使用Control.FindControl方法直接從第一種形式中獲取值。 查詢字符串可能是另一個選擇。 不敲其他答案,但是會話有時會很棘手。 盡管它們是一個簡單的解決方案,但是根據您的應用程序以及在某些情況下取決於瀏覽器的安全設置,它們可能會丟失。 不過,這主要是使用HTTPS時要考慮的問題。 對此的另一個參考可能是ASP.NET Web Pages中的跨頁發布

有許多不同的方法可以實現您需要執行的操作。 我的方法是將兩個頁面都嵌入一種形式,並使用JavaScript或jQuery處理數據,並使用WebMethods防止使用回發。 對用戶而言,這也將是一個更加流暢的呈現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM