由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数据库的动态查询中填充。
不确定我是否很理解你的问题,但如果我是你,我会把另一个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();
}
}
}