2009-12-16 32 views
3

在Telerik RadGrid中,用戶可以添加一行並編輯現有的行。看起來,網格實際上強制在UI控件呈現在屏幕上之前發生回傳。我注意到從點擊按鈕到控件出現的時間延遲了二到二秒。這似乎大約是一秒到兩秒太長。這裏是我的代碼,我不完全確定這個bug是什麼。Telerik RadGrid添加/編輯行性能問題

我很抱歉提前「whatz wrongz與我codez post」,但這似乎是最簡單的方法去了解這一個。同樣,我有一個性能問題,並想弄清楚如何解決它在什麼的需要進行調整代碼方面.....

<asp:UpdatePanel ID="upPhone" runat="server"> 
    <contenttemplate> 
      <telerik:RadGrid runat="server" ID="gridPhone" DataSourceID="dsPhone" AutoGenerateColumns="False" 
       Width="100%" AllowAutomaticDeletes="True" AllowAutomaticInserts="True" 
       GridLines="None" Skin="Vista" AllowAutomaticUpdates="True" 
       ondatabound="gridPhone_DataBound" onitemdeleted="gridPhone_ItemDeleted" 
       oniteminserted="gridPhone_ItemInserted" 
       onitemupdated="gridPhone_ItemUpdated" 
       onneeddatasource="gridPhone_NeedDataSource"> 
       <MasterTableView DataKeyNames="phone_id" CommandItemDisplay="Top" 
        EditMode="InPlace" AllowFilteringByColumn="False"> 
        <Columns> 
         <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn"> 
          <ItemStyle CssClass="MyImageButton" /> 
         </telerik:GridEditCommandColumn> 
         <telerik:GridBoundColumn DataField="phone_id" ReadOnly="true" UniqueName="phone_id" 
          Visible="false"> 
         </telerik:GridBoundColumn> 
         <telerik:GridDropDownColumn DataField="d_phone_type_id" DataSourceID="dsPhoneType" 
          UniqueName="d_phone_type_id" DataType="System.Int32" ListValueField="d_phone_type_id" 
          ListTextField="name" HeaderText="Type"> 
         </telerik:GridDropDownColumn> 
         <telerik:GridTemplateColumn HeaderText="Number" SortExpression="number" UniqueName="number"> 
          <ItemTemplate> 
           <asp:Label runat="server" ID="lblPhoneNumber" Text='<%# Eval("number", "{0:(###) ###-####}") %>'></asp:Label> 
          </ItemTemplate> 
          <EditItemTemplate> 
           <asp:TextBox ID="txtNumber" MaxLength="10" runat="server" Text='<%# Bind("number") %>'></asp:TextBox> 

          </EditItemTemplate> 
         </telerik:GridTemplateColumn> 
         <telerik:GridBoundColumn DataField="description" UniqueName="description" HeaderText="Description"> 
         </telerik:GridBoundColumn> 
         <telerik:GridCheckBoxColumn DataField="isprimary" UniqueName="isprimary" HeaderText="Primary" 
          DataType="System.Int16"> 
         </telerik:GridCheckBoxColumn> 
         <telerik:GridButtonColumn ConfirmText="Delete this number?" ConfirmDialogType="RadWindow" 
          ConfirmTitle="Delete" ButtonType="ImageButton" CommandName="Delete" Text="Delete" 
          UniqueName="DeleteColumn"> 
          <ItemStyle HorizontalAlign="Center" CssClass="MyImageButton" /> 
         </telerik:GridButtonColumn> 
        </Columns> 
        <EditFormSettings> 
         <EditColumn UniqueName="EditCommandColumn1"> 
         </EditColumn> 
        </EditFormSettings> 
       </MasterTableView> 
       <ClientSettings> 
        <Selecting AllowRowSelect="True" /> 
       </ClientSettings> 
      </telerik:RadGrid> 
      <asp:ObjectDataSource ID="dsPhoneType" runat="server" 
       OldValuesParameterFormatString="original_{0}" SelectMethod="GetPhoneTypes" 
       TypeName="DataAccess"></asp:ObjectDataSource> 
      <asp:SqlDataSource ID="dsPhone" runat="server" ConnectionString="<%$ ConnectionStrings:TBD %>" 
       DeleteCommand="DELETE FROM [phone] WHERE [phone_id] = @phone_id" InsertCommand="INSERT INTO [phone] ([person_id],[d_phone_type_id], [number], [description], [isprimary]) VALUES (@person_id,@d_phone_type_id, @number, @description, @isprimary)" 
       SelectCommand="get_PhoneById" UpdateCommand="UPDATE [phone] SET [d_phone_type_id] = @d_phone_type_id, [number] = @number, [description] = @description, [isprimary] = @isprimary WHERE [phone_id] = @phone_id" 
       SelectCommandType="StoredProcedure"> 
       <SelectParameters> 
        <asp:ControlParameter ControlID="lblID" Name="person_id" PropertyName="Text" Type="Int32" /> 
       </SelectParameters> 
       <DeleteParameters> 
        <asp:Parameter Name="phone_id" Type="Int32" /> 
       </DeleteParameters> 
       <UpdateParameters> 
        <asp:Parameter Name="d_phone_type_id" Type="Int32" /> 
        <asp:Parameter Name="number" Type="Int64" /> 
        <asp:Parameter Name="description" Type="String" /> 
        <asp:Parameter Name="isprimary" Type="Boolean" /> 
        <asp:Parameter Name="phone_id" Type="Int32" /> 
       </UpdateParameters> 
       <InsertParameters> 
        <asp:ControlParameter ControlID="lblID" Name="person_id" PropertyName="Text" /> 
        <asp:Parameter Name="d_phone_type_id" Type="Int32" /> 
        <asp:Parameter Name="number" Type="Int64" /> 
        <asp:Parameter Name="description" Type="String" /> 
        <asp:Parameter Name="isprimary" Type="Boolean" /> 
       </InsertParameters> 
      </asp:SqlDataSource> 
     </contenttemplate> 
</asp:UpdatePanel> 

回答

1

只是一對夫婦的事情要檢查:

您是否重複了GridPhone_NeedDataSource事件,ItemUpdated,Deleted和Inserted事件以及本地Rad Grid綁定behviour(通過使用asp:SqlDataSource控件)中的綁定行爲?如果你看到你的代碼,看看你的代碼會很有用。

您在網格中有多少條記錄?我發現如果網格中有大量的項目,並且打開了一些高級功能(我注意到你已經選擇了行選擇),網格停下來。

如果這些工作都不適用於您的情況,那麼可能值得檢查其網站的performance section

+0

我需要查看。我相信功能是空的。 – RSolberg 2009-12-17 15:58:36

+0

謝謝!它實際上似乎可能有一些代碼在回發的Page_Load函數內運行,而不應該。我稍後會給這個測試看看它是如何執行的。我還刪除了諸如NeedDataSource的特定事件,因爲那裏沒有代碼。這是從另一個應用程序複製/粘貼實施:) – RSolberg 2009-12-17 19:57:05

1

我看到你正在使用DataSourceID="dsPhone"onneeddatasource="gridPhone_NeedDataSource"

不知道,如果你既需要。此外,請確保您不要在代碼(page_Load或任何其他地方)中執行DataBind()其他位置,因爲您已將OnNeedDataSource事件附加到網格上

+0

謝謝!它實際上似乎可能有一些代碼在回發的Page_Load函數內運行,而不應該。我稍後會給這個測試看看它是如何執行的。我還刪除了諸如NeedDataSource的特定事件,因爲那裏沒有代碼。這是從另一個應用程序的複製/粘貼實施:) – RSolberg 2009-12-17 19:55:59