C#呈现的ASPX页面中的动态菜单选项

时间:2014-09-16 03:05:51

标签: c# asp.net

我有一个ASPX DropDownList,其ListItems必须从Dynamics CRM中的值动态填充。

在触发某些输入标记时更改页面元素的可见性不是问题 - 使用动态asp:ListItems填充asp:DropDownList。

具体来说,当页面加载时,下拉列表中可见的ListItem必须从我们CRM中每小时更新的实体的最新实体列表中即时填充。

据我所知,ASPX本身不能包含逻辑,那就是C#,但我不知道如何以这种方式填充ListItem。

我确实遇到过这个人的解决方案:

http://aspsnippets.com/articles/creating-dynamic-dropdownlist-controls-in-asp.net.aspx

但在我尝试编译它以查看其功能时,我收到了有关多个表单标记的错误。

有什么想法吗?


具体来说,我有以下ASPX:

<asp:DropDownList id="location" runat="server" onselectedindexchanged="updateOther">
<asp:ListItem>North</asp:ListItem>
<asp:ListItem>South</asp:ListItem>
<asp:ListItem>West</asp:ListItem>
</asp:DropDownList>
<asp:DropDownList id="other" runat="server">
<asp:ListItem>Option 1</asp:ListItem>
<asp:ListItem>Option 2</asp:ListItem>
<asp:ListItem>Option 3</asp:ListItem>
</asp:DropDownList>

我需要它,以便根据在“位置”下拉列表中选择的位置,使用我们CRM中的最新值更改/更新“其他”中的可用选项。再次 - “其他”中的值将从我们在“updateOther”方法中执行的CRM数据库的即时查询中填充。

1 个答案:

答案 0 :(得分:0)

不确定我是否理解你的问题,但如果我是你,我会把另一个下拉列表放在usercontrol中,通过jquery将查询数据作为json参数传递给它,并在每个请求时加载它 类似下面的内容

        $.ajax({
            type: "POST",
            url: "default.aspx/LoadUserControl",
            data: "{query: '" + $("#location").val() + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (r) {
                //Clear the div before load   
                $("#SomeDIVinYourPage").before(r.d);
            }
        });
在你的代码隐藏中

    [WebMethod]
    public static string LoadUserControl(string query)
    {
        using (Page page = new Page())
        {
            UserControl userControl = (UserControl)page.LoadControl("OtherUserControl.ascx");

            page.Controls.Add(userControl);
            using (StringWriter writer = new StringWriter())
            {
                page.Controls.Add(userControl);
                HttpContext.Current.Server.Execute(page, writer, false);
                return writer.ToString();
            }
        }
    }