簡體   English   中英

在C#中動態添加數據表中的多行

[英]Dynamically adding multiple rows in data table in C#

我曾嘗試使用DATATABLE存儲整個應用程序的值。 我沒有使用任何數據庫永久存儲值。 這是我可以在整個應用程序中使用的虛擬值。

問題實際上是每當我在我的DATATABLE中添加一個新的行值時,它只會覆蓋DATATABLE中的先前值而不是添加新行。

是否有機會動態地向DATATABLE添加多行,我可以在整個應用程序會話中使用它。

**我的注冊頁面**

public partial class _Default : System.Web.UI.Page
{
    DataTable myDataTable;

    protected void Page_Load(object sender, EventArgs e)
    {
        myDataTable = new DataTable();
        myDataTable.Columns.Add("username");
        myDataTable.Columns.Add("firstname");
        myDataTable.Columns.Add("lastname");
        myDataTable.Columns.Add("password");
        myDataTable.Columns.Add("conpassword");
        myDataTable.Columns.Add("email");

        myDataTable.Rows.Add("kavi1", "kavi", "rajan", "123456", "123456", "kavi@gmail.com");
        myDataTable.Rows.Add("sri1", "sri", "prem", "123456", "123456", "sri@gmail.com");
        myDataTable.Rows.Add("mani1", "mani", "vanan", "123456", "123456", "mani@gmail.com");
        HttpContext.Current.Session["name"] = myDataTable;

        if (!IsPostBack)
        {


            if (Session["name"] != null)
            {

                myDataTable = Session["name"] as DataTable;

            }
        }

    }
    protected void Button1_Click(object sender, EventArgs e)
    {

        myDataTable.Rows.Add(new object []{ TextBox1.Text ,TextBox2.Text,TextBox3.Text , TextBox4.Text,TextBox5.Text ,TextBox6.Text });
        HttpContext.Current.Session["name"] = myDataTable;

        if (Session["name"] != null)
        {
            Response.Write("success");

        }

    }

我的登錄頁面

public partial class login : System.Web.UI.Page
{
    DataTable dtResult;

    protected void Page_Load(object sender, EventArgs e)
    {
        dtResult = (DataTable)Session["name"];
    }
    protected void Button1_Click(object sender, EventArgs e)
    {


        for (int i = 0; i < dtResult.Rows.Count; i++)
        {

            string un = dtResult.Rows[i].Field<string>("username");
            string fn = dtResult.Rows[i].Field<string>("password");


            if (TextBox1.Text == un && TextBox2.Text == fn)
            {
                //Response.Write("success");
                Response.Redirect("home.aspx");
            }

        }


    }

問題:

在每一個Postback你正在創建一個新的datatable ,它覆蓋到以前的:

protected void Page_Load(object sender, EventArgs e)
    {
        myDataTable = new DataTable();
        //....
        HttpContext.Current.Session["name"] = myDataTable;    //overriding to the previous

因此,當您單擊按鈕添加新行時,它會回發並重新創建新數據表,然后向該表添加新行。

解:

您只需要修改Page_Load事件處理程序:

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["name"] != null)    //this is you have to do at every postback
    {
        myDataTable = Session["name"] as DataTable;
    }

    if (!IsPostBack)
    {
        //if it is not post back, create a new DataTable and add values to it
        myDataTable = new DataTable();
        myDataTable.Columns.Add("username");
        myDataTable.Columns.Add("firstname");
        myDataTable.Columns.Add("lastname");
        myDataTable.Columns.Add("password");
        myDataTable.Columns.Add("conpassword");
        myDataTable.Columns.Add("email");

        myDataTable.Rows.Add("kavi1", "kavi", "rajan", "123456", "123456", "kavi@gmail.com");
        myDataTable.Rows.Add("sri1", "sri", "prem", "123456", "123456", "sri@gmail.com");
        myDataTable.Rows.Add("mani1", "mani", "vanan", "123456", "123456", "mani@gmail.com");
        HttpContext.Current.Session["name"] = myDataTable;
    }
}

暫無
暫無

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

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