我正在开发一个asp.net/C#网络应用程序,
我在更新面板中有一个地方持有人
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="LinkButton1" EventName="Click"/>
</Triggers>
<ContentTemplate>
<asp:PlaceHolder ID="PlaceHolder1" runat="server">
</asp:PlaceHolder>
</ContentTemplate>
</asp:UpdatePanel>
当我点击“LinkButton1”
时,我使用它来动态加载Web用户控件<asp:LinkButton ID="LinkButton1" runat="server" OnClick="Link1_Click">Load</asp:LinkButton></li>
在后面的代码中:
protected void Link1_Click(object sender, EventArgs e)
{
PlaceHolder1.Controls.Clear();
(MyControl) CC = (MyControl)LoadControl("Controls/MyControl.ascx");
PlaceHolder1.Controls.Add(CC);
}
在我加载的控件中,我放置了一个更新面板,该面板由控件中的复选框触发。
<asp:UpdatePanel ID="MapRefresh" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="CheckBox1" EventName="CheckedChanged" />
</Triggers>
<ContentTemplate>
//Here I place the things I want to update
</ContentTemplate>
</asp:UpdatePanel>
该复选框在更新面板
之外声明<asp:CheckBox ID="CheckBox1" Checked="true" Text="View" runat="server" AutoPostBack="True" oncheckedchanged="CheckBox1_CheckedChanged" />
在后面的代码中:
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
//Do the update on the controls that are in the update panel
}
从主页面,当我点击LinkButton1控件加载正确,一切都很好。 但是,当我单击控件的复选框时,它不会像我想要的那样更新内部更新面板。控件刚从主页面消失。
非常感谢任何帮助。 提前谢谢,我希望我很清楚
答案 0 :(得分:1)
您需要在页面onload事件中创建用户控件并使其隐藏。建议您在那里创建控件并使用链接按钮使其可见并设置其他属性。
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
//-- Create your controls here
}
答案 1 :(得分:0)
试试我的代码behide
Default.cs
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Session["isLoad"] == null) return;
if (Session["isLoad"].ToString() == "1")
{
PlaceHolder1.Controls.Clear();
Control CC = LoadControl("MyControl.ascx");
PlaceHolder1.Controls.Add(CC);
}
}
protected void Link1_Click(object sender, EventArgs e)
{
Session["isLoad"] = "1";
Response.Redirect(Request.RawUrl);
}
}
MyControl.cs
public partial class MyControl : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
//Do the update on the controls that are in the update panel
if(CheckBox1.Checked)
lblMessage.Text = "Hello";
else
lblMessage.Text = "Goodbye";
}
}