C# 在UpdatePanel中重新填充Asp.Net DropDownList

C# 在UpdatePanel中重新填充Asp.Net DropDownList,c#,jquery,asp.net,updatepanel,html-select,C#,Jquery,Asp.net,Updatepanel,Html Select,我在updatepanel中重新填充dropdownlist时遇到了一些问题。在页面加载时,我加载下拉列表: this.dropdownFacility.Items.Clear(); this.dropdownFacility.DataSource = table; this.dropdownFacility.DataTextField = "FacilityName"; this.dropdownF

我在updatepanel中重新填充dropdownlist时遇到了一些问题。在页面加载时,我加载下拉列表:

            this.dropdownFacility.Items.Clear();
            this.dropdownFacility.DataSource = table;
            this.dropdownFacility.DataTextField = "FacilityName";
            this.dropdownFacility.DataValueField = "FacilityID";
            this.dropdownFacility.DataBind();
变量“table”是我从SQL数据库填充的数据表。这将在页面第一次加载后工作并显示所有我的值。然后,在我的页面中,我有一个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>
...

...
有人知道我做错了什么吗?

试着这样做:

<asp:DropDownList runat="server" ID="dropdownFacility" 
                 AppendDataBoundItems="True" AutoPostBack="True" />

嗯,我解决了这个问题。这个问题实际上是由于我正在使用带有ASP.NET UpdatePanel的JQuery对话框。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">
然后,我必须通过以下操作将更新面板移动到对话框内部:

$("#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">


我们可以看到您的NewFacility click事件处理程序的代码吗?偶数处理程序中的代码只是将记录提交到数据库,而且工作正常。经过更多测试,我发现删除JQuery对话框调用div,修复了重新填充下拉列表的问题。但是,我仍然希望使用对话框逻辑。也许有解决办法吗?