避免ASP中的数据冗余.网络页面

本文关键字:网络 数据冗余 ASP 避免 | 更新日期: 2023-09-27 18:09:15

我有一个使用listview显示2列数据的asp.net页面。第一列只有标签,第二列有下拉列表。

我担心的是,在第二列的下拉列表有相同的项目100%的时间,他们永远不会改变,因为它是绑定的,数据源到这些下拉列表也是相同的。由于这些下拉菜单是在一个列表视图,这种重复发生在每一行添加到我的列表视图!

所以,我正在考虑消除这种数据冗余传输通过电线。什么好主意吗?

避免ASP中的数据冗余.网络页面

如果您正在使用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();
        }
    }