我有一种情况,在页面上有7-8个下拉列表,这些下拉列表中有大量要绑定的数据。我有一个单选按钮列表有2个选择,并选择它们中的任何一个,我从缓存中获取数据并绑定所有需要大约6-7秒的下拉菜单。但是,由于基本功能基于日期范围,因此每次都不使用全部下拉菜单。所以我在想,如果我可以根据需要加载下拉列表,例如点击下拉箭头,我会绑定下拉菜单,这样会更好,用户不必等待那些6-7秒的时间切换radiobuttonlist选择。我试着在下拉的onClick上调用一个JS函数,并从那里触发一个按钮的事件。我得到的数据是在下拉菜单中填充的,但是,一旦数据绑定,下拉菜单就会崩溃,用户不得不再次点击以从下拉列表项中进行选择。我只是想知道是否有人可以给我一个想法,以便下拉菜单在绑定之后不会崩溃并保留,或者完全没有延迟加载下拉列表。我也从我的POC中指定了一些代码。单击下拉箭头/延迟加载下拉列表时加载下拉列表
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/ xhtml1- transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript" language="javascript">
function load() {
//debugger;
var dropdown = document.getElementById('DropDownList1');
var ln = dropdown.options.length;
if (ln == 0) {
var btn = document.getElementById('Button1');
btn.click();
}
dropdown.click();
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"/>
<div>
<asp:DropDownList ID="DropDownList1" runat="server" onClick="javascript:load();">
</asp:DropDownList>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" Style="display: noone;"/>
</div>
</form>
</body>
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
ArrayList arr = new ArrayList();
arr.Add("Item1");
arr.Add("Item2");
arr.Add("Item3");
DropDownList1.DataSource = arr;
DropDownList1.DataBind();
}
}
</html>