2012-01-31 106 views
0

我有一个dropDownlist有拖曳Datasource名称Datasource1,Datasource2。 当page_Load产生时,数据源1被分配给Dropdownlist。我有网页上的按钮,我想,当我在按钮按下,Datasource2分配给Dropdownlistbutton click event我写了这个:更改DropdownList数据源动态

Ddl_Num.DataSource = SqlDataSource8; 
     Ddl_Num.DataBind(); 

,但它并没有改变。 我该怎么做?

+0

的组合当你指定datasource1到下拉列表,你做这里面如果(!的IsPostBack)? – rikitikitik 2012-01-31 07:21:21

回答

0

set AutoPostBack="True".Eg。

<asp:DropDownList ID="ddlList" runat="server" AutoPostBack="True" ></asp:DropDownList> 
+0

单击按钮可更改数据源。没有提到关于下拉列表必须做任何事情。 – rikitikitik 2012-01-31 07:23:49

+0

我设置了自动回传它是真的; – 2012-01-31 07:30:07

0

您对填充Dasource2。这可以在单击按钮或在页面中的某处(可能是页面加载事件)中使用全局数据源声明来完成。最好在你的button_click事件中为它编写代码。设置autopostback = true为你的按钮。然后首先清除下拉列表,然后将数据源绑定到您的下拉列表。为dropdownlist和按钮设置runat =“server”和autopostback =“true”。你什么时候填充你的datasource2?在哪个事件?

+0

你可以检查datasource2是否正在填充或不正确吗? – Sukanya 2012-01-31 08:15:00

0

你在做什么PreRender事件处理程序?

+0

不,它是空的。 – 2012-01-31 08:03:11

+0

你能分享一下你如何绑定第一个数据源? 你使用任何try catch块/动态控件? – Rakesh 2012-01-31 08:41:27

1

尝试使用!的IsPostBack与会话

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!isPostBack || Session["DataSource"] = null)   
    { 
     Ddl_Num.DataSource = SqlDataSource1;//DataSource1 
     Ddl_Num.DataBind(); 
    } 
} 

protected void Btn_Click(object sender, EventArgs e) 
{ 
    Ddl_Num.DataSource = SqlDataSource2;//DataSource2 
    Ddl_Num.DataBind(); 

    Session["ChangeDataSource"] = true; 
}