【发布时间】:2017-02-10 05:06:39
【问题描述】:
我正在开发一个 asp.net 应用程序。我有一个客户帐号的下拉列表。当我在文本框中输入客户身份证号码并单击搜索按钮时,下拉菜单应填充之前针对该身份证号码提供的所有帐号。它工作正常,但是当我添加一个新的身份证号码并单击搜索时,下拉菜单仍保留以前客户的帐号。我希望每次单击“搜索”时下拉列表清空并重新填充,并且值为 1 的项目即“其他”应保持不变,列表的其余部分会动态变化。
protected void Search_Click(object sender, EventArgs e)
{
ddl_accno.Items.Clear();
ddl_accno.Items.Add(new ListItem("Other", "0"));
string cnic = txt_cnic.Text;
BindControls.ControlBinder.BindDropDown(ddl_accno, UL.GetAccountNo(cnic),"ACCOUNT_NO","ACCOUNT_NO");
}
<td style="width:275px">
<label for="textfield">
Account no.</label>
<asp:DropDownList Font-Size="Small" ID="ddl_accno"
runat="server" AutoPostBack = "True"
Width="319px" AppendDataBoundItems="true"
onselectedindexchanged="ddl_accno_SelectedIndexChanged">
<asp:ListItem Value="0" Selected="True" Text="Select Account No"></asp:ListItem>
<asp:ListItem Value="1" Text="Other"></asp:ListItem>
</asp:DropDownList><br />
我正在使用 UL.GetAccountNO() 函数来使用查询填充 ddl。如果用户选择其他,则会显示一个文本框,用户可以在其中输入除了下拉列表中的帐号之外的帐号。
【问题讨论】:
-
你最后错过了 ddl.databind() 吗?
-
我已经在使用 BindControl.ControlBinder 而不是 DataBind()
-
用这个方法试试看是否有效??
-
还有一件事是你绑定了 page_load() 上的下拉菜单。如果是,则在下一个后续事件填充下拉列表时,它将再次从零加载下拉列表。为避免这种情况,请在每次回发时填写下拉列表(不是建议的解决方案)或使用 DDL 上的更新面板和发送事件的控件。希望你能理解
标签: c# asp.net drop-down-menu