页面回发导致生成的HTML消失了

时间:2012-03-02 04:07:20

标签: javascript asp.net html

我遇到过以下博客中的JavaScript动态添加或删除HTML表格行:

http://viralpatel.net/blogs/2009/03/dynamically-add-remove-rows-in-html-table-using-javascript.html

我的目标是让一个ASP.NET FileUpload控件供用户上传图像,然后图像名称将在表行上动态显示,该表应该从上面的JavaScript生成。

问题是每次添加图片时,回发都会导致HTML表格消失,如何将HTML表存储在某个地方?

我确实考虑使用StringBuild类从代码后面附加HTML表格,但删除行会有问题。

任何更好的解决方法来实现这一目标?请发表你的评论。

先谢谢你。

3 个答案:

答案 0 :(得分:2)

ASP.NET FileUpload控件不是很灵活,并且有更多最新的方法来处理文件上传。有一个很棒的jQuery文件上传插件,如果我能正确理解你的问题,那就完全符合你的要求:http://blueimp.github.com/jQuery-File-Upload/

答案 1 :(得分:1)

您需要确保生成并插入动态控件的代码在每个页面回发后运行。只要您执行此操作,ViewState将确保在回发后保留输入到动态控件中的值。

答案 2 :(得分:1)

这是一个使用文字控件的简单模型。

<强> ASPX

        <asp:Literal ID="lbl1" runat="server"></asp:Literal>
        <br />
        <br />
        <asp:Button ID=btnAdd runat=server Text="Simulate Upload Complete()" onclick="btnAdd_Click" />
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

<强> CS

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        lbl1.Text = "<table>";
        lbl1.Text += "<tr>";
        lbl1.Text += "<td>Row1</td>";
        lbl1.Text += "</tr>";
        lbl1.Text += "<tr>";
        lbl1.Text += "<td>Row2</td>";
        lbl1.Text += "</tr>";
        lbl1.Text += "</table>";
    }
}

protected void btnAdd_Click(object sender, EventArgs e)
{
    lbl1.Text = lbl1.Text.Replace("</table>", string.Empty);
    lbl1.Text += string.Format("<tr><td>{0}</td></tr>", TextBox1.Text);
    lbl1.Text += "</table>";
    TextBox1.Text = string.Empty;
}