【发布时间】:2010-09-17 12:06:54
【问题描述】:
我有一种情况,页面上有 7-8 个下拉菜单,需要绑定大量数据。我有一个单选按钮列表,有 2 个选项,在选择其中任何一个时,我从缓存中获取数据并绑定所有下拉列表,这大约需要 6-7 秒。但是,我不会每次都使用所有下拉菜单,因为基本功能是基于日期范围的。所以我在想,如果我可以按需加载下拉列表,即单击下拉箭头,我会绑定下拉列表,这样会更好,用户不必在单选按钮列表之间切换时等待 6-7 秒选择。我尝试在下拉菜单的 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>
【问题讨论】:
标签: c# javascript asp.net asp.net-ajax controls