我有一个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数据库的即时查询中填充。
答案 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();
}
}
}