0
我有一个动态添加的下拉回发在updatepanel中,它总是会导致回发。ASP.NET在updatepanel中动态添加下拉回发
我已经将ddl构建移至page_init,也尝试给ddl一个id。我已经尝试使更新面板有条件并在ddl选择被触发后发布更新。
任何想法?
<body>
<form id="form1" runat="server">
<asp:Panel ID="Panel1" runat="server" Height="309px">
<div id="ctldiv">
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"> </asp:ToolkitScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Panel Created"></asp:Label><br />
<asp:Button ID="Button1" runat="server" Text="Refresh Panel 1" OnClick="Button1_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</asp:Panel>
</form>
</body>
代码背后
public partial class Default4 : System.Web.UI.Page
{
protected void Page_Init(object sender, EventArgs e)
{
buildddl();
}
protected void message(string message)
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "", "dspmsg('" + message + "');", true);
}
private void buildddl()
{
DataTable dt = new DataTable();
DataRow dr = null;
dt.Columns.Add(new DataColumn("col1", typeof(string)));
dt.Columns.Add(new DataColumn("col2", typeof(string)));
dr = dt.NewRow();
dr["col1"] = "1";
dr["col2"] = "1";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["col1"] = "2";
dr["col2"] = "2";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["col1"] = "3";
dr["col2"] = "3";
dt.Rows.Add(dr);
DropDownList ddl = new DropDownList();
ddl.DataTextField = "col1";
ddl.DataValueField = "col2";
ddl.DataSource = dt;
ddl.DataBind();
ddl.AutoPostBack = true;
ddl.ID = "ddl1";
ddl.SelectedIndexChanged += new EventHandler(ddl_select);
Panel1.Controls.Add(ddl);
}
protected void ddl_select(Object sender, EventArgs e)
{
DropDownList ComboBox = (DropDownList)sender;
Label1.Text = "selected :" + ComboBox.SelectedItem;
}
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "Panel refreshed at " +
DateTime.Now.ToString();
}
}