【发布时间】:2016-04-13 04:40:27
【问题描述】:
我在 UpdatePanel 中使用 DropDownList。当用户在 TextBox 中写入一些文本并单击“Go”按钮时,它会填充。
xaml 如下:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:TextBox ID="ODSearchTB" runat="server" ClientIDMode="Static"></asp:TextBox>
<asp:Button ID="ODFindButton"
class="btn btn-default goButton"
runat="server" Text="Go"
ClientIDMode="Static"
UseSubmitBehavior="False"
CausesValidation="False"
OnClick="ODFindButton_Click" /><br/>
<asp:DropDownList ID="ODSearchDDL" runat="server" Visible="False" AutoPostBack="True"></asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>
以及点击后填充 DropDownList 的代码:
protected void ODFindButton_Click(object sender, EventArgs e)
{
var res = ServiceUnitOfWork.MedicalOffices.FindMedicalOfficesByName(
ODSearchTB.Text,
doctor: false,
hospital: true,
service: false,
establishment: true);
List<LightMedicalOffice> source = getLightMedicalOffices(res.ToList());
ODSearchDDL.DataSource = source;
ODSearchDDL.DataTextField = "Name";
ODSearchDDL.DataValueField = "IdAddress";
ODSearchDDL.DataBind();
ODSearchDDL.Visible = true;
}
这很好用,数据源将正确更新,并且 DropDownList 将被填充和更新(在 UpdatePanel 中),而无需重新加载页面。提交表单时出现问题:Page_Load 事件中的 DropDownList 为空(数据源 null),因此当我到达 Submit_Click 和 CustomValidator_ServerValidate 事件时,我不知道选择的值是什么列表。
页面和控件上似乎都启用了 ViewState。我不知道是什么导致了这种行为。
【问题讨论】:
标签: asp.net drop-down-menu postback