繁体   English   中英

DataTable中的列消失了

[英]Columns in DataTable Disappearing

我有一个DataTable,其中包含页面加载时生成的列。 因为我不希望每次发生回发时都重新创建这个表,所以我在no-postback if语句中使用它。 以机智:

DataTable purchase_display_data = new DataTable();

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        DataColumn rownumber = new DataColumn();
        rownumber.DataType = System.Type.GetType("System.Int16");
        rownumber.AutoIncrement = true;
        rownumber.AutoIncrementSeed = 1;
        rownumber.AutoIncrementStep = 1;

        purchase_display_data.Columns.Add(rownumber);
        purchase_display_data.Columns.Add("Item");
        purchase_display_data.Columns.Add("Charge");
    }
}

后来,我按下按钮后试图添加数据。 附:

protected void buttonOK_Click(object sender, EventArgs e)
{
    DataRow newline = purchase_display_data.NewRow();
    newline[1] = "1";
    newline[2] = "2";
    purchase_display_data.Rows.Add(newline);
}

按下所述按钮后,我返回一个错误,指出未找到该列。 在调试中,我注意到我的DataTable没有列,尽管在页面加载时成功创建了它们(每次调试和其他测试)。 这些专栏似乎已经消失了。 有人可以告诉我为什么会发生这种情况,当然还有如何解决这个问题。

您在回发中丢失了数据。 这很正常。 您必须使用一些状态管理机制,如ViewStateSession来提及一些。

您可以使用ViewState尝试:

private DataTable purchase_display_data
{
    get
    {
        if (ViewState["purchase_display_data"] == null)
            ViewState["purchase_display_data"] = new DataTable();
        return (DataTable)ViewState["purchase_display_data"];
    }
    set { ViewState["purchase_display_data"] = value; }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM