2016-04-09 26 views
1

arasındaki liste değerlerini korumak Merhaba millet ve peşin sayesindeasp.net postbacks

Bir sınıf benim .cs dosyasında yapılan ve daha sonra Şöyle bir liste <> ilan ettik ...

Sonra
public partial class MyClass : System.Web.UI.Page 
    { 
     public List<PrecioStock> PreciosYStocks = new List<PrecioStock>(); 


     protected void Page_Load(object sender, EventArgs e) 
     { 
... 
... 

    public class PrecioStock 
    { 
     public string Precio; 
     public string Stock; 

     public PrecioStock(string Precio, string Stock) 
     { 
      this.Precio = Precio; 
      this.Stock = Stock; 
     } 

     public void SetPrecio(string nuevoPrecio) 
     { 
      this.Precio = nuevoPrecio; 
     } 

     public void SetStock(string nuevoStock) 
     { 
      this.Stock = nuevoStock; 
     } 

     public string GetPrecio() 
     { 
      return this.Precio; 
     } 

     public string GetStock() 
     { 
      return this.Stock; 
     } 

    } 

, ben

  PreciosYStocks.Clear(); 

      foreach (ListItem items in ControlListaGenerico.Items) 
      { 
       if (items.Selected) 
       { 
        for (int i = 0; i < TablaDeDatos.Rows.Count; i++) 
        { 
         if(items.Value.Equals(TablaDeDatos.Rows[i]["ID_FORMATO"].ToString())) 
         { 
          TextBox Precio = (TextBox)Precio_Stock_PN.FindControl("NuevoPrecioTB_" + items.Value); 
          Precio.Text = TablaDeDatos.Rows[i]["PRECIO"].ToString(); 

          TextBox Stock = (TextBox)Precio_Stock_PN.FindControl("NuevoStockTB_" + items.Value); 
          Stock.Text = TablaDeDatos.Rows[i]["STOCK"].ToString(); 

          PreciosYStocks.Add(new PrecioStock(Precio.Text, Stock.Text)); 

          break; 
         } 
        } 
       } 
      } 

Eh, iyi doldurmak gibi görünüyor ... bazı metin kutularının metinlerle, bu şekilde doldurmak, ama sorun ben DetailsView ait GÜNCELLEME butonuna tıkladığınızda olmasıdır Bu bir posta oluşturur geri olay, veri kaybolur ve artık ona erişemiyorum.

Peki, geri göndermeden sonra buna nasıl erişebilirim? Demek istediğim, kalıcı hale getir.

"viewState" ve "Session" yollarını okudum, ancak bunların nasıl yanıtlanacağını bilmiyorum, bunun cevabı onlar.

Lütfen yardım ve tekrar teşekkürler.

+1

ardından Oturum gitmek yoludur. Bunun hakkında hızlı bir arama ile bilgi bulabilirsiniz. Tüm kullanıcılar için genel olarak kullanılıyorsa, başka bir yere gerek duyulmuyorsa, bu sınıftaki herkesin erişmesi veya statik olması için Uygulama nesnesinde olması gerekir. –

+0

@Mazinger [viewtate] ile tam olarak ne denediniz (https://msdn.microsoft.com/en-us/library/ms227551 (v = vs.85) .aspx) ve [sessionionstate] (https: // msdn .microsoft.com/en-us/library/6ad7zeeb.aspx) çalışmadı mı? –

+0

Merhaba Eugene, listedeki öğeleri nasıl kullanacağımı bilmiyorum: sınıf tanımı içinde ?, get ve set yöntemlerinde?, Listeye eleman eklediğimde? Bu konuda kafam karıştı. – Mazinger

cevap

1

Veriler çok büyük değilse (durumda çok fazla veri yoksa), sayfanın ViewState numarasını yazabilirsiniz. Bu şekilde her bir geri gönderme ile geri gönderilir. Session'da saklarsanız, Session'da saklanan ve asla tekrar gerekmeyebilecek birçok veriyle sonlanırsınız.

İşte desen.

  • Depolamak için ihtiyacınız olan her türlü veriyi temsil eden bir sınıf oluşturun. (Birden fazla olabilir ama bir tane daha basittir.)
  • Bu sınıfa devam etmek için ihtiyacınız olan her şeyi saklayın.
  • PreRender etkinliğinde, sayfadaki değişiklikler tamamlandığında, sınıfınızı ViewState'a yazarsınız.
  • Load olayında geri okuyorsunuz. Okumak için bir şey yoksa (bu ilk sayfa yüklemesidir), sınıfınızın yeni bir örneğini oluşturursunuz. onlar kullanıcı başına ise

    public partial class YourPage: System.Web.UI.Page 
    { 
        private PageState _pageState; 
    
        protected void Page_Load(object source, EventArgs e) 
        { 
         _pageState = ViewState["pageState"] as PageState ?? new PageState(); 
        } 
    
        protected void Page_PreRender(object sender, EventArgs e) 
        { 
         ViewState["pageState"] = _pageState; 
        } 
    } 
    
    [Serializable] 
    public class PageState 
    { 
        //Whatever data you need to persist 
    } 
    
+0

OK Scott, işe yarıyor! Çok teşekkür ederim! – Mazinger