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

本文关键字:动态 菜单 选项 ASPX | 更新日期: 2023-09-27 18:22:02

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

当某些输入标记被触发时,更改页面元素的可见性并不是问题所在——用动态asp:ListItems填充asp:DropDownList就是问题所在。

具体来说,当加载页面时,必须从CRM的最新实体列表中动态填充下拉列表中可见的ListItems,该列表每小时更改一次。

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

我确实遇到了这个家伙的解决方案:

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的最新值更改/更新"其他"中的可用选项。同样,"other"中的值将从"updateOther"方法中执行的CRM数据库的动态查询中填充。

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

不确定我是否很理解你的问题,但如果我是你,我会把另一个dropdownlist放在用户控件中,通过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();
            }
        }
    }