我使用的是Visual Studio 2010和SQL Server 2008,並使用sqldatasoure填充了我的gridview。並且gridview內部的itemtemplate中有一些dropdownlist,它們再次與sqldatasource綁定並在rowdatabound事件我爲這些下拉列表分配選定的值。有將近2000 +記錄,使網格加載速度非常慢。任何優化這個想法。ASP.NET Gridview加載速度更慢,數據綁定更多
<form id="form1" runat="server">
<div>
<asp:GridView ID="Gridview1" runat="server" DataSourceID="SqlDataSource1"
AutoGenerateColumns="False" onrowdatabound="Gridview1_RowDataBound">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:DropDownList ID="Dropdownlist1" runat="server" DataSourceID="SqlDataSource2" DataTextField="empid" DataValueField="empname">
</asp:DropDownList>
<asp:HiddenField ID="HiddenField1" runat="server" Value='<%# Eval("empid") %>' />
<asp:DropDownList ID="Dropdownlist2" runat="server" DataSourceID="SqlDataSource3" DataTextField="desgid" DataValueField="desgname">
</asp:DropDownList>
<asp:HiddenField ID="HiddenField2" runat="server" Value='<%# Eval("desgid") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString='<%$ ConnectionStrings:dbconn %>'
SelectCommandType="StoredProcedure" SelectCommand="SP_Fetch_Grid"> </asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString='<%$ ConnectionStrings:dbconn %>'
SelectCommandType="StoredProcedure" SelectCommand="SP_Fetch_DDL1"></asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString='<%$ ConnectionStrings:dbconn %>'
SelectCommandType="StoredProcedure" SelectCommand="SP_Fetch_DDL2"></asp:SqlDataSource>
</div>
</form>
protected void Gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
HiddenField hf1 = (HiddenField)e.Row.FindControl("HiddenField1");
HiddenField hf2 = (HiddenField)e.Row.FindControl("HiddenField2");
DropDownList ddl1 = (DropDownList)e.Row.FindControl("DropDownList1");
DropDownList ddl2 = (DropDownList)e.Row.FindControl("DropDownList2");
ddl1.SelectedValue = hf1.Value;
ddl2.SelectedValue = hf2.Value;
}
}
我會建議以不同的方式設計用戶界面。具有+2000條記錄的ddl在可用性方面不是最佳實踐。 – aleafonso 2012-01-06 16:53:36
@aleafonso我認爲OP在GridView中意味着2000條記錄。 – jadarnel27 2012-01-06 17:02:00
需要從列表中選擇每行的值。我想我找不到其他備用 – DON 2012-01-06 17:09:33