基本选择脚本需要很长时间才能检索70个值



我有一个网格视图,它有数据绑定列和模板列。我不会在这里粘贴整个XML代码,但基本上这里是每列的分解:

  • 项目ID(数据绑定列)
  • 项目类别(数据绑定列)
  • 项目子类别(数据绑定列)
  • 项(数据绑定列)
  • 订单数量(文本框-无边界模板字段)
  • 供应商(DropDownList无界模板字段)**
  • 项目成本(文本框-无边界模板字段)
  • 付费(复选框-无边界模板字段)

gridview检索所有记录,并仅按所选类别进行筛选(因此每个类别只提取大约70条记录,因此并不庞大)。

在SSMS中,这需要0秒才能执行。

在ASP.net中大约需要20秒。

更糟糕的是,供应商下拉列表目前是一个空白字段。然而,当我实际将此代码添加到源代码中时:

<ItemTemplate>
<asp:DropDownList ID="ddSupplier" runat="server" DataSource="<%# PopulateControls() %>"  
                   DataTextField="SupplierName"  DataValueField="SupplierName" />
</ItemTemplate>
<ControlStyle BorderStyle="Solid" />
<HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle" />
<ItemStyle BorderStyle="None" HorizontalAlign="Left" VerticalAlign="Middle" 
           Width="50px" />
 </asp:TemplateField>

然后,检索所有值大约需要60秒。

我的问题:

  1. 有没有一种更快的方法可以通过gridview中的基本选择脚本提取值
  2. 有一个或多个带有绑定字段的模板有问题吗?我有其他只包含数据绑定列的数据网格,它们执行得很快

帮助?

如果看不到后面的代码,我只能说这么多。但已经存在一些问题。

一个网格视图中的70行并不小。网格在ViewState中存储了大量数据。如果可能,对数据进行分页。如果没有,请尝试将会话用于ViewState。

ddSupplier的数据源可能相同。在RowDataBound 上设置

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
   if (gv.EditIndex == e.Row.RowIndex && 
       e.Row.RowType==DataControlRowType.DataRow) 
   {       
       DropDownList ddSupplier= (DropDownList)e.Row.FindControl("ddSupplier"); 
       //bind the control
       //MySuppliers would be read and kept in Session on first page load
       ddSupplier.DataSource = MySuppliers;
   }
}

模板绑定字段不是问题。

通过分析代码并查看这20秒的实际使用情况,您可以更好地理解问题。

最新更新