簡體   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