ASP C#将行添加到表并生存回发

时间:2017-04-28 17:36:54

标签: c# asp.net

我正在寻找一种简单的方法来创建用户在提交表单中输入的数据输入表。该表实际上只需要添加一行只包含输入的数据,但更重要的是,可以在回发后继续使用。

该表应该有一个标题,然后在最后一次提交时输入每个'set'数据行。

例如:

<asp:Table ID="lastRecordTable" runat="server" ViewStateMode="Enabled"
    AutoPostBack="true">
    <asp:TableHeaderRow>
        <asp:TableCell>A</asp:TableCell>
        <asp:TableCell>B</asp:TableCell>
        <asp:TableCell>C</asp:TableCell>
        <asp:TableCell>D</asp:TableCell>
    </asp:TableHeaderRow>
    <asp:TableRow>
        <asp:TableCell>1</asp:TableCell>
        <asp:TableCell>2</asp:TableCell>
        <asp:TableCell>3</asp:TableCell>
        <asp:TableCell>4</asp:TableCell>
    </asp:TableRow>
</asp:Table>

代码背后:

TableRow row = new TableRow();
TableCell cell1 = new TableCell();
TableCell cell2 = new TableCell();
TableCell cell3 = new TableCell();
TableCell cell4 = new TableCell();
cell1.Text = 1.ToString();
cell1.Text = 2.ToString();
cell1.Text = 3.ToString();
cell1.Text = 4.ToString();
row.Cells.Add(cell1);
row.Cells.Add(cell2);
row.Cells.Add(cell3);
row.Cells.Add(cell4);
lastRecordTable.Rows.Add(row);

感谢任何建议。

2 个答案:

答案 0 :(得分:0)

因为您动态添加行,所以需要(重新)在每个页面加载时创建它们,并且包括PostBack。因此,将行添加到IsPostBack检查之外。

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        //not here
    }

    //but here
    TableRow row = new TableRow();
    TableCell cell1 = new TableCell();
    TableCell cell2 = new TableCell();
    TableCell cell3 = new TableCell();
    TableCell cell4 = new TableCell();
    cell1.Text = 1.ToString();
    cell1.Text = 2.ToString();
    cell1.Text = 3.ToString();
    cell1.Text = 4.ToString();
    row.Cells.Add(cell1);
    row.Cells.Add(cell2);
    row.Cells.Add(cell3);
    row.Cells.Add(cell4);
    lastRecordTable.Rows.Add(row);
}

您无需ViewStateMode="Enabled"AutoPostBack="true"就可以了。

答案 1 :(得分:0)

这就是我的工作:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.IsPostBack)
        {                

        }    

        lastRecordTable();

    }

表方法:

    public void lastRecordTable()
    {
        if (Session["lastRecord"] == null)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("1");
            dt.Columns.Add("2");
            dt.Columns.Add("3");
            dt.Columns.Add("4");

            Session["lastRecord"] = dt;

            GridView1.DataSource = dt;
            GridView1.DataBind();           
        }
        else
        {
            DataTable dt = (DataTable)Session["lastRecord"];
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }
    }  

修改表格:

    protected void buttonSubmit_Click(object sender, EventArgs e)
    {
            //do stuff here
            DataTable dt = Session["lastRecord"] as DataTable;
            DataRow row = dt.NewRow();
            row["1"] = "A";
            row["2"] = "B";
            row["3"] = "C";
            row["4"] = "D";
            dt.Rows.Add(row);
            Session["lastRecord"] = dt;
            lastRecordTable();
    }

ASP:

    <asp:GridView ID="GridView1" runat="server" ViewStateMode="Enabled" 
         AutoPostBack="true"></asp:GridView>

我对asp c#非常陌生,所以不要100%确定这是正确的#,但它确实有效!