当我隐藏或显示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});
},
这里预览了它的样子:
答案 0 :(得分:1)
如果您动态添加任何内容,则必须在任何后续回发中重新添加。他们不会在下一次回复后自动“在那里”。
这要求您存储已创建和添加动态控件的事实,因此允许您在回发时检测到这一点并再次添加控件。
最好(如果可能)在life cycle的init
阶段添加动态控件,因为这意味着他们会在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)