表中的项目在回发后消失了

时间:2015-05-05 11:46:35

标签: c# asp.net

当我隐藏或显示Panel时,我(动态)添加到表中的项目已经消失,另一件事是当我尝试向表中添加新行时,它不会显示它,它& #39; s覆盖同一行,为什么??。

这里是 CodeBehind

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

        <asp:Label ID="Label1" runat="server" Text="Student Name:"></asp:Label>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <br />
        <asp:Label ID="Label2" runat="server" Text="Course:"></asp:Label>
        <asp:DropDownList ID="DropDownList1" runat="server">
        </asp:DropDownList>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Add Course" />
        <br />
        <asp:Label ID="Label3" runat="server" Text="Grade:"></asp:Label>
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        <asp:Button ID="Button4" runat="server" OnClick="Button4_Click" Text="Add" />
        <br />
        <br />
        <asp:Panel ID="Panel1" runat="server" GroupingText="Course Settings" Visible="False">
            <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
            <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Add" />
            <asp:Button ID="Button3" runat="server" OnClick="Button3_Click" Text="Close" />
        </asp:Panel>
        <br />
        <br />
        <asp:Table ID="Table1" runat="server" BorderStyle="Solid">
            <asp:TableRow runat="server">
                <asp:TableCell runat="server">Name</asp:TableCell>
                <asp:TableCell runat="server">Course</asp:TableCell>
                <asp:TableCell runat="server">Grade</asp:TableCell>
            </asp:TableRow>
        </asp:Table>

    </div>
    </form>
</body>
</html>

这里是 Html来源

MyExtensionJavaScriptClass.prototype = {
run: function(arguments) {
    // Pass the baseURI of the webpage to the extension.
    arguments.completionFunction({"baseURI": document.baseURI});
},

这里预览了它的样子:

enter image description here

1 个答案:

答案 0 :(得分:1)

如果您动态添加任何内容,则必须在任何后续回发中重新添加。他们会在下一次回复后自动“在那里”。

这要求您存储已创建和添加动态控件的事实,因此允许您在回发时检测到这一点并再次添加控件。

最好(如果可能)在life cycleinit阶段添加动态控件,因为这意味着他们会在load之前获取视图状态信息阶段。

修改

回应OP的评论......

  

我在哪里存储这些控件?我在哪里添加它们?在Page_Load?

您不存储控件...您存储已添加控件的事实。

“最简单”的方法是使用ViewState,但这会让您加入catch-22 situation ...因为ViewState无法使用init生命周期的阶段,这是重新添加这些控制的首选地点。

另一种选择是“将事实”存储在<asp:HiddenField>中,您可以在init阶段内查看。Request然而您必须直接从.Value对象获取值,因为该字段在init阶段没有正确的if (!Page.IsPostBack) { string hdnValue = Request[hdnFieldCtrl.UniqueId]; // Recreate controls based on the details you need } 。你会这样做...

java.util.concurrent.ExecutionException: java.lang.NullPointerException
at org.eclipse.jetty.client.util.FutureResponseListener.getResult(FutureResponseListener.java:118)
at org.eclipse.jetty.client.util.FutureResponseListener.get(FutureResponseListener.java:101)
at org.eclipse.jetty.client.HttpRequest.send(HttpRequest.java:642)