【问题标题】:Dynamic menu options in an ASPX page rendered by C#C# 呈现的 ASPX 页面中的动态菜单选项
【发布时间】:2014-09-16 03:05:50
【问题描述】:

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

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

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

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

【问题讨论】:

  • 一些小的代码示例可以使您的问题更加具体。旁注:“ASPX 本身不能包含逻辑”是不正确的,是否是好的做法是个人喜好。

标签: c# asp.net


【解决方案1】:

不确定我是否非常了解您的问题,但如果我是您,我会将另一个下拉列表放在用户控件中,通过 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();
            }
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多