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();
}
}