避免ASP中的数据冗余.网络页面
本文关键字:网络 数据冗余 ASP 避免 | 更新日期: 2023-09-27 18:09:15
我有一个使用listview显示2列数据的asp.net页面。第一列只有标签,第二列有下拉列表。
我担心的是,在第二列的下拉列表有相同的项目100%的时间,他们永远不会改变,因为它是绑定的,数据源到这些下拉列表也是相同的。由于这些下拉菜单是在一个列表视图,这种重复发生在每一行添加到我的列表视图!
所以,我正在考虑消除这种数据冗余传输通过电线。什么好主意吗?
如果您正在使用ObjectDataSource,您可以启用缓存来减少加载时间:
<asp:objectdatasource ID="ObjectDataSource1" runat="server"
EnableCaching="true" .... >
</asp:objectDataSource>
如果你的数据源是一个数据库调用,那么你可以通过将调用的结果存储在一个DataView
对象中,然后将你的下拉列表绑定到该对象,而不是为每个下拉列表调用数据库来减少这一点。
您可以使用以下方法:
它将项目加载到第一个DropDownList中,然后使用JQuery检索该DropDownList,并将项目复制到所有其他的。
标记
<div id="listViewContainer">
<asp:ListView ID="listView1" runat="server">
<ItemTemplate>
<div><asp:DropDownList ID="dropDownList1" runat="server"></asp:DropDownList></div>
</ItemTemplate>
</asp:ListView>
</div>
脚本$(function () {
var sourceDropDown = $('#listViewContainer').find('select').first();
$('#listViewContainer').find('select').not(sourceDropDown).each(function () {
var dropdown = $(this);
dropdown.find('option').remove();
sourceDropDown.find('option').each(function () {
var option = $(this);
dropdown.append($('<option />').text(option.text()).val(option.val()));
});
});
});
void listView1_ItemDataBound(object sender, ListViewItemEventArgs e)
{
if (e.Item.DisplayIndex == 0)
{
DropDownList dropDownList1 = (DropDownList)e.Item.FindControl("dropDownList1");
dropDownList1.DataSource = dataTable;
dropDownList1.DataTextField = "Text";
dropDownList1.DataValueField = "Value";
dropDownList1.DataBind();
}
}