2011-09-02 45 views
2

我有一個綁定到EntityDataSource的RadGrid。一些列綁定到綁定實體的導航屬性。當我嘗試刪除一條記錄時,出現以下錯誤:RadGrid綁定到EntityDataSource時自動刪除的錯誤

錯誤:Sys.WebForms.PageRequestManagerServerErrorException:在插入,更新或刪除操作期間,未在實體上找到名爲'Vehicle.VehicleNo'的屬性。檢查以確保指定爲綁定表達式的屬性可用於數據源。

我知道如果選擇使用純外鍵ID而不是導航屬性,一切正常。如果我手動處理,我可以很容易地讓刪除工作。但是我「米只是想那裏一定是一種方式,自動刪除工作過。任何想法?

<telerik:RadGrid ID="RadGrid1" runat="server" AllowAutomaticDeletes="True" 
        AllowFilteringByColumn="True" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" 
        DataSourceID="EntityDataSource1" GridLines="None" ShowGroupPanel="True" Skin="Hay" 
        OnItemUpdated="RadGrid1_ItemUpdated" 
        OnItemInserted="RadGrid1_ItemInserted" OnItemCommand="RadGrid1_ItemCommand" 
        Height="400px" Width="700px" CellSpacing="0"> 
        <MasterTableView DataKeyNames="ADChecklistId" DataSourceID="EntityDataSource1" CommandItemDisplay="Top"> 
         <CommandItemSettings AddNewRecordText="Add New Aerial Device Checklist" ShowRefreshButton="false" 
          ShowAddNewRecordButton="true"></CommandItemSettings> 
         <RowIndicatorColumn FilterControlAltText="Filter RowIndicator column"> 
          <HeaderStyle Width="20px" /> 
         </RowIndicatorColumn> 
         <ExpandCollapseColumn FilterControlAltText="Filter ExpandColumn column"> 
          <HeaderStyle Width="20px" /> 
         </ExpandCollapseColumn> 
         <Columns> 
          <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn" 
           HeaderText="Edit"> 
          </telerik:GridEditCommandColumn> 
          <telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Delete" UniqueName="DeleteCommandColumn" HeaderText="Delete" ConfirmDialogType="RadWindow" ConfirmText="Are you sure you want to delete this record?"> 
          </telerik:GridButtonColumn> 
          <telerik:GridBoundColumn DataField="Vehicle.VehicleNo" FilterControlAltText="Filter VehicleNo column" 
           HeaderText="VehicleNo" SortExpression="Vehicle.VehicleNo" UniqueName="Vehicle.VehicleNo"> 
          </telerik:GridBoundColumn> 
          <telerik:GridBoundColumn DataField="Employee.FirstName" FilterControlAltText="Filter FirstName column" 
           HeaderText="FirstName" SortExpression="Employee.FirstName" UniqueName="Employee.FirstName"> 
          </telerik:GridBoundColumn> 
          <telerik:GridBoundColumn DataField="Employee.LastName" FilterControlAltText="Filter LastName column" 
           HeaderText="LastName" SortExpression="Employee.LastName" UniqueName="Employee.LastName"> 
          </telerik:GridBoundColumn> 
          <telerik:GridBoundColumn DataField="Utility.UtilityName" HeaderText="Utility" SortExpression="Utility.UtilityName" UniqueName="Utility.UtilityName" > 
          </telerik:GridBoundColumn>         
          <telerik:GridDateTimeColumn DataField="CreatedOn" DataType="System.DateTime" FilterControlAltText="Filter CreatedOn column" 
           HeaderText="CreatedOn" SortExpression="CreatedOn" UniqueName="CreatedOn" DataFormatString="{0:MM/dd/yy}"> 
          </telerik:GridDateTimeColumn> 
          <telerik:GridBoundColumn DataField="CreatedBy" FilterControlAltText="Filter CreatedBy column" 
           HeaderText="CreatedBy" SortExpression="CreatedBy" UniqueName="CreatedBy"> 
          </telerik:GridBoundColumn> 
          <telerik:GridDateTimeColumn DataField="ModifiedOn" DataType="System.DateTime" FilterControlAltText="Filter ModifiedOn column" 
           HeaderText="ModifiedOn" SortExpression="ModifiedOn" UniqueName="ModifiedOn" DataFormatString="{0:MM/dd/yy}"> 
          </telerik:GridDateTimeColumn> 
          <telerik:GridBoundColumn DataField="ModifiedBy" FilterControlAltText="Filter ModifiedBy column" 
           HeaderText="ModifiedBy" SortExpression="ModifiedBy" UniqueName="ModifiedBy"> 
          </telerik:GridBoundColumn> 
         </Columns> 
         <EditFormSettings> 
          <EditColumn FilterControlAltText="Filter EditCommandColumn column"> 
          </EditColumn> 
         </EditFormSettings> 
        </MasterTableView> 
        <ClientSettings AllowDragToGroup="True" EnablePostBackOnRowClick="true"> 
         <Scrolling AllowScroll="True" UseStaticHeaders="True" /> 
         <Resizing AllowColumnResize="true" ClipCellContentOnResize="false" /> 
        </ClientSettings> 
        <FilterMenu EnableImageSprites="False"> 
        </FilterMenu> 
        <HeaderContextMenu CssClass="GridContextMenu GridContextMenu_Default"> 
        </HeaderContextMenu> 
       </telerik:RadGrid> 
<asp:EntityDataSource ID="EntityDataSource1" runat="server" AutoGenerateWhereClause="True" 
    ConnectionString="name=MSOpsEntities" DefaultContainerName="MSOpsEntities" 
    EnableFlattening="False" EnableDelete="True" EntitySetName="ADChecklists" 
    Include="Vehicle, Employee, Utility" OrderBy="it.CreatedOn DESC" 
    OnSelecting="EntityDataSource1_Selecting" 
    ondeleting="EntityDataSource1_Deleting"> 
    <WhereParameters> 
     <asp:SessionParameter Name="UtilityId" SessionField="utilityId" Type="Int32" /> 
    </WhereParameters> 
</asp:EntityDataSource> 

回答

0

嘗試設置上包含導航性能GridBoundColumn小號ReadOnly="true",這個工作對我來說,也許你也可以使用與Eval模板列而不是Bind

+0

我已經這樣做 - 但是我剛剛添加了一個新的未綁定複選框列,並且我注意到空白屬性值/ key出現在Hashtable中 - 因此假設它試圖更新這個空白值。我如何有一個未綁定的複選框? – PeterX