当删除

当删除

问题描述:

LinqDataSource不支持Select属性连接到GridView的LinqDataSource在Asp.net Web应用程序中。当删除

<asp:LinqDataSource ID="LinqDataSource1" runat="server" ContextTypeName="DataClassesDataContext" OnInit="LinqDataSource1_Init" 
        EnableDelete="True" 
        EntityTypeName="Id" TableName="CompanysCourses" 
        OnDeleting="Course_Deleting" OnDeleted="Course_Deleted"> 
</asp:LinqDataSource> 

内的OnInit事件中,我已经修改了选择,并在那里像

this.LinqDataSource1.Where = "CompanyId == " + UserManager.CompanyId; 
this.LinqDataSource1.Select= "Course"; 

我选择表命名CompanysCourses和过滤后的结果属性,然后选择特定的课程,根据公司的ID

这是我的网格视图

<asp:GridView ID="grdVwCourses" runat="server" 
    AllowPaging="True" AllowSorting="True" 
    AutoGenerateColumns="False" 
    DataKeyNames="Id" DataSourceID="LinqDataSource1" 
    OnSelectedIndexChanged="grdVwCourses_SelectedIndexChanged" 
    CssClass="table table-responsive" 
    PageSize="10" GridLines="Horizontal" 
    meta:resourcekey="GridView1Resource1"> 
    <EmptyDataTemplate> 
     <asp:Label runat="server" ID="NotFoundLabel" Text="" meta:resourcekey="NotFoundLabelResource1"></asp:Label> 
    </EmptyDataTemplate> 
    <Columns> 
     <asp:TemplateField HeaderText="#" meta:resourcekey="HeaderId"> 
      <ItemTemplate> 
       <%# Container.DataItemIndex + 1 %> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:BoundField DataField="Id" Visible="false"/> 
     <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" meta:resourcekey="BoundFieldResource1" /> 
     <asp:BoundField DataField="EnglishName" HeaderText="EnglishName" SortExpression="EnglishName" meta:resourcekey="BoundFieldResource2" /> 
     <asp:BoundField DataField="CreatedDate" HeaderText="CreatedDate" SortExpression="CreatedDate" meta:resourcekey="BoundFieldResource3" /> 

     <asp:TemplateField meta:resourcekey="TemplateFieldResource1"> 
      <ItemTemplate> 
       <asp:HyperLink ID="userLink" runat="server" NavigateUrl='<%# GetCategoriesLink(Eval("Id")) %>' Text="Categories" meta:resourcekey="userLinkResource1" /> 
      </ItemTemplate> 
     </asp:TemplateField> 

     <asp:CommandField ShowSelectButton="True" ShowDeleteButton="True" meta:resourcekey="CommandFieldResource1" /> 
    </Columns> 
</asp:GridView> 

我hav E在网格视图中启用删除,但是当点击删除我得到这个例外

的LinqDataSource“LinqDataSource1”时删除,插入或更新操作启用不支持Select属性 。

我有这样的覆盖On_Deleting活动,显示确认对话框

protected void Course_Deleting(object sender, LinqDataSourceDeleteEventArgs e) 
{ 
    e.Cancel = true 
    this.panMessage.Visible = true; 
    int id = ((Course)e.OriginalObject).Id; 
    ViewState["DeleteObject"] = id; 
} 

我不知道这是什么问题的原因。

编辑 被称为重复的问题没有我寻求的答案,也是细节不同。

+0

的[使用LinqDataSource不支持时删除,插入或更新操作启用Select属性]可能的复制(http://*.com/questions/1593559/linqdatasource-does-not-support-the -select-property-when-delete-insert-or -u) – sgmoore

+0

请参考我的编辑,谢谢 –

我今天来到了一些遗留项目的相同问题,因为当您使用SELECT语句时,显示此小部件的错误不支持删除。

所以解决的办法就是从这个数据源中删除你的SELECT语句,即删除此行:

this.LinqDataSource1.Select= "Course"; 

然后在GridView的变化的DataKeyNames你的表ID名称,改变它的导航属性来访问领域例如,Field.Id,Course.Name等字段中的每个列。

最后一件事是转换到主表并使用任何字段来访问该表的子值的Id。

int id = ((Course)e.OriginalObject).Id;