私は本当に遅いgridviewを使用しているアプリケーションを持っています。GridviewのDataBind()が遅い
ページにTrace=true
を追加した後、私はGridViewでBindData()を呼び出すときに、時間が費やされた場所を追跡しました。 GridView
はLinqDataSource
に接続されています。ここで
は、トレース出力です:LINQデータソースコードのように見える
Trace.Write(" DataBind");
gvContact.DataBind();
Trace.Write(" PopulateStates");
populateStates(contact);
:ここ
GetContact 0.955485090710761 0.000339
DataBind 0.97438854173692 0.018903
PopulateStates 6.58986882347249 5.615480
は、サンプルのasp.netページでは、コードで
<asp:LinqDataSource ContextTypeName="DAL.BALDataContext" TableName="loc_access_contacts"
ID="_ldsContact" runat="server" OrderBy="organisation, last_name, first_name">
</asp:LinqDataSource>
<cc1:CustomGridView ID="gvContact" runat="server" DataSourceID="_ldsContact" AutoGenerateColumns="False" Width="100%"
DataKeyNames="person_id" ForeColor="#333333" GridLines="None" AllowPaging="False"
AllowSorting="True" BorderStyle="None" ShowFooter="false" CaptionAlign="Top"
PagerStyle-HorizontalAlign="Left" HeaderStayPolicy="NotStay" SessionKey="Contact.GridView.Columns.SortSettings"
SaveKey="ContactManagementSortSettings" OnRowCommand="gvContact_RowCommand" OnSorting="gvContact_Sorting">
背後にあります:
public System.Data.Linq.Table<loc_access_contact> loc_access_contacts
{
get
{
return this.GetTable<loc_access_contact>();
}
}
このプロパティから生成されるSQLは、標準SELECT <all fields> FROM loc_access_contact
です。テーブルには、およそ287の連絡先が含まれてい
CREATE TABLE [dbo].[loc_access_contact](
[person_id] [int] IDENTITY(1,1) NOT NULL,
[organisation] [nvarchar](50) NULL,
[last_name] [nvarchar](50) NULL,
[first_name] [nvarchar](50) NULL,
[is_active] [tinyint] NULL,
[state_id] [char](2) NULL,
[postal_code] [nchar](4) NULL,
[town] [nvarchar](50) NOT NULL,
[phone_number] [nvarchar](20) NULL,
[mobile_number] [nvarchar](20) NULL,
[fax_number] [nvarchar](20) NULL,
[email_address] [nvarchar](255) NULL,
[street_name] [nvarchar](255) NULL,
[house_number] [nvarchar](20) NULL,
[postal_box] [nvarchar](20) NULL,
[language] [tinyint] NULL,
CONSTRAINT [PK_person] PRIMARY KEY CLUSTERED
(
[person_id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
:よう
とテーブルloc_access_contact
が見えます。
どのようにDataBindが遅いですか?何が起こっているのかをさらに追跡するにはどうすればよいですか?
おそらく、ソースの一部のプロパティが遅いと評価されますか? – gabba
ソースに関するいくつかの情報を追加しましたが、まだそれほど遅い理由は分かりません。テーブルには現在287のエントリがあります。 – Pierre