【问题标题】:Dynamically adding multiple rows in data table in C#在 C# 中的数据表中动态添加多行
【发布时间】:2016-06-02 02:54:36
【问题描述】:

我已尝试使用 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");
            }

        }


    }

【问题讨论】:

  • 解决了还是还有问题?

标签: c# asp.net datatable


【解决方案1】:

问题:

在每个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;
    }
}

【讨论】:

  • 你是对的@shaharyar ...现在它工作正常
猜你喜欢
  • 1970-01-01
  • 2021-10-12
  • 1970-01-01
  • 2016-08-07
  • 2016-07-18
  • 1970-01-01
  • 2016-02-07
  • 1970-01-01
  • 2011-06-02
相关资源
最近更新 更多