Linqdatasource和关系数据问题

时间:2009-07-12 07:57:58

标签: linq-to-sql gridview paging linqdatasource

我遇到linqdatasource的问题。我在我的页面中有gridview,我将它的数据源设置为linqdatasource,同时我设置AllowPaging =“True”,AllowSorting =“True”。

<asp:GridView ID="cityGrid" runat="server" AutoGenerateColumns="False" 
DataKeyNames="CityId" AllowPaging="True" 
AllowSorting="True" DataSourceID="LinqCityData">

现在在linqdatasource中我想从两个表(带有FK的关系表)中检索数据,这一步没有问题。 我可以像这样使用linqdatasource的Select属性从其他表中选择

<asp:LinqDataSource ID="LinqCityData" runat="server" 
ContextTypeName="ContactSysDataContext" 
TableName="Office_ContactSys_Cities" 
Select="new (CityId, CityName , Office_ContactSys_Province.ProvinceName)">
</asp:LinqDataSource>

或我在linqdatasource中使用Selection事件

protected void LinqCityData_Selecting(object sender, LinqDataSourceSelectEventArgs e)
    {
        ContactSysDataContext db = new ContactSysDataContext();
        var CityResult= from p in db.Office_ContactSys_Cities join o in db.Office_ContactSys_Provinces on p.ProvinceId equals o.ProvinceId select new { o.ProvinceName, p.CityId, p.CityName };
        e.Result = CityResult;
    }

但是在这一步之后我不能在linqdatasource中使用自动删除而是我收到了这个错误:

  

LinqDataSource'LinqCityData'没有   当支持Select属性时   删除,插入或更新操作   已启用

以下是我的问题:如何使用linqdatasource(linqdatasource启用删除或更新)在gridview中实现分页(当然是关系表)?

1 个答案:

答案 0 :(得分:2)

如果从linqdatasource中删除select语句,则不会再出现该错误。然后你可以使用更新,删除和插入。哦,你还必须在数据源中启用删除插入和更新。

以下是一个例子:

<asp:LinqDataSource ID="LinqDataSource1" runat="server" 
    ContextTypeName="Custom.Data.DataAccessDataContext"

    TableName="CustomerSegmentMappings" 
    EnableDelete="True"
    EnableInsert="True"
    EnableUpdate="True">
</asp:LinqDataSource>