Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# asp.net在回发之间保留列表值_C#_Asp.net_Variables_Postback - Fatal编程技术网

C# asp.net在回发之间保留列表值

C# asp.net在回发之间保留列表值,c#,asp.net,variables,postback,C#,Asp.net,Variables,Postback,大家好,提前谢谢 我在我的.cs文件中创建了一个类,然后像这样声明了一个类列表 public partial class MyClass : System.Web.UI.Page { public List<PrecioStock> PreciosYStocks = new List<PrecioStock>(); protected void Page_Load(object sender, EventArgs e)

大家好,提前谢谢

我在我的.cs文件中创建了一个类,然后像这样声明了一个类列表

    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;
        }

    }
public分部类MyClass:System.Web.UI.Page
{
public List PreciosYStocks=新列表();
受保护的无效页面加载(对象发送方、事件参数e)
{
...
...
公共级PrecioStock
{
公共字符串Precio;
公开发行股票;
公共PrecioStock(字符串Precio,字符串库存)
{
这个.Precio=Precio;
这个。股票=股票;
}
公共void SetPrecio(字符串nuevoPrecio)
{
this.Precio=新Precio;
}
公共无效设置库存(字符串新库存)
{
this.Stock=newovostock;
}
公共字符串GetPrecio()
{
把这个还给我;
}
公共字符串GetStock()
{
把这个还给我。股票;
}
}
然后,我用一些文本框的文本来填充它

            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;
                        }
                    }
                }
            }
precisosystocks.Clear();
foreach(ControlListGenerico.items中的ListItem项目)
{
如果(选定项)
{
对于(int i=0;i
嗯,它看起来很好,但问题是,当我单击DetailsView的UPDATE按钮时,这会生成回发事件,数据丢失,我无法再访问它

那么,回发后我如何访问它?我的意思是,让它持久化

我读过“viewState”和“Session”方法,但不知道如何实现它们,以防它们能解决这个问题


请再次提供帮助和感谢。

如果数据不是太大(在您的情况下,数据不是很多)然后,您可以将其写入页面的
视图状态
。这样,每次回发时它都会被提交回来。如果您将其存储在
会话
中,那么您最终会在
会话
中存储大量可能不再需要的数据

这是模式

  • 创建一个表示需要存储的任何数据的类(可以有多个,但一个更简单)
  • 在该类中存储您需要的任何内容
  • 在对页面进行修改后的
    PreRender
    事件中,将类写入
    ViewState
  • Load
    事件中,您将其读回。如果没有什么可读的内容(这是第一个页面加载),则您将创建一个新的类实例

    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
    }
    

如果它们是每个用户的,那么会话就是最好的选择。您可以通过快速搜索找到相关信息。如果它们对所有用户都是全局的,那么它们应该位于应用程序对象中,以便所有人都可以访问,如果其他地方不需要,则应位于此类中。@Mazinger您到底尝试了什么,但没有成功?嗨,Eugene,问题是我不知道如何在我的列表中使用它们:在类定义中,在get和set方法中,当我向列表中添加元素时?我对此感到困惑。