我在更新面板中重新填充下拉列表时遇到了一些麻烦。在页面加载时,我加载下拉列表:
this.dropdownFacility.Items.Clear();
this.dropdownFacility.DataSource = table;
this.dropdownFacility.DataTextField = "FacilityName";
this.dropdownFacility.DataValueField = "FacilityID";
this.dropdownFacility.DataBind();
变量'table'是我从SQL数据库填充的DataTable。这可以在第一次加载页面后显示我的所有值。然后,在我的页面内,我有一个显示的JQuery对话框:
<div id="assignmentDialog" title="Process Assignment">
<div style="margin:10px; font-size:16px; ">
<asp:Label runat="server" Text="Select A Facility:*" Font-Bold="true" style="width:140px; display:inline-block; vertical-align:text-top; text-align:right;" />
<asp:DropDownList runat="server" ID="dropdownFacility" />
<asp:LinkButton runat="server" ID="linkNewFacility" Text="New" ForeColor="Blue" OnClientClick="OpenFacilityDialog();" />
</div>
</div>
单击链接按钮后,将显示另一个JQuery对话框,允许用户输入设施的数据。完成后,他们可以单击按钮提交数据:
<asp:Button runat="server" ID="NewFacility" Text="Submit" OnClick="NewFacility_Clicked" OnClientClick="return CheckFacilityData();" style="display: block; text-align:center; margin: 0 auto;" />
以下是问题发生的地方。单击按钮后,我可以看到记录已插入表中。此外,在页面加载期间我的代码中有断点,我可以看到在重新绑定下拉列表之后,项目数量增加了1,表明新记录存在。但是,在实际页面上,该新记录不会显示在下拉列表中。以下是我使用触发器定义更新面板的方法:
<asp:UpdatePanel runat="server" ID="assignmentUpdatePanel" UpdateMode="Conditional" ChildrenAsTriggers="true">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="NewFacility" EventName="Click" />
</Triggers>
...
谁能看到我做错了什么?
答案 0 :(得分:1)
试试这样:
<asp:DropDownList runat="server" ID="dropdownFacility"
AppendDataBoundItems="True" AutoPostBack="True" />
或:
this.dropdownFacility.Items.Clear();
this.dropdownFacility.DataSource = table;
this.dropdownFacility.DataTextField = "FacilityName";
this.dropdownFacility.DataValueField = "FacilityID";
this.dropdownFacility.AppendDataBoundItems = true;
this.dropdownFacility.AutoPostBack = true;
this.dropdownFacility.DataBind();
答案 1 :(得分:0)
好吧,我弄明白了这个问题。问题实际上是由于我正在使用带有ASP.NET UpdatePanel的JQuery Dialog。 JQuery逻辑实际上为对话框创建了一个新div,并将其放在表单元素之外。为了解决这个问题,我基本上做了两件事。第一种方法是通过执行以下操作将对话框附加回表单:
$("#assignmentDialog").dialog(
{
modal: true,
hide: "explode",
width: 450,
autoOpen: false,
resizable: false,
open: function (event, ui)
{
$(this).parent().appendTo("form");
},
close: function (event, ui)
{
// Clear the inputs
$("#textboxStartDate").val("");
$("#textboxEndDate").val("");
$("#dropdownFacility").val("");
}
});
然后,我必须通过这样做来移动对话框内的更新面板:
<div id="assignmentDialog" title="Process Assignment">
<asp:UpdatePanel runat="server" ID="assignmentUpdatePanel" UpdateMode="Conditional" ChildrenAsTriggers="true">