ASP.NET 페이지에서 asp : ListView 컨트롤이 있습니다. 이 방법 설정 인 EntityDataSource에 바인딩 : 두 테이블, SOrder 및 주소가 SQL 서버에서asp 정렬 : EntityDataSource에 바인딩 된 ListView
<asp:EntityDataSource ID="EntityDataSourceOrders" runat="server"
ConnectionString="name=EntitiesContext"
DefaultContainerName="EntitiesContext" EntitySetName="SOrder"
Include="Address"
EnableDelete="True" EnableInsert="True"
EnableUpdate="True">
</asp:EntityDataSource>
. SOrder에는 Address 테이블에 대한 외부 키 AddressID가 있습니다 ("주문에는 하나의 주소가 있음"). 주소에는 영숫자 필드 "Name1"이 있습니다. 나는이 버튼을 클릭하면 내가 "저를 알리는 EntitySqlException을 얻을
<asp:LinkButton runat="server" ID="SortButtonName" Text="Name"
CommandName="Sort" CommandArgument="Address.Name1" />
: ListView에의 LayoutTemplate에서
는 순서의 주소의 이름 1하여 목록에서 순서를 정렬 할 수있는 링크 버튼입니다 'Address.Name1'을 (를) 현재 컨텍스트에서 확인할 수 없습니다. " 내가 다른 테이블에서 관련 분야를 기준으로 정렬 할 때 이<asp:LinkButton runat="server" ID="SortButtonOrderCode" Text="Order number"
CommandName="Sort" CommandArgument="OrderCode" />
그래서 예외가 발생합니다 : - "OrderCode"예를 들어 - 작동 주문 테이블의 "평면"필드에 의해 정렬
. 나는 Include = "Address" 관련 주소의 필드별로 정렬하는 EntityDataSource 속성이 있어야한다고 생각했지만 그렇지 않은 것 같습니다.
내가 테스트 내가 EntityDataSource 내부적으로 만들 것으로 기대 쿼리 확인하는 해킹했습니다: 엔티티에 Linq에와
을 :
using (EntitiesContext ctx = new EntitiesContext())
{
var result = from order in ctx.SOrder.Include("Address")
orderby order.Address.Name1
select order;
foreach (SOrder x in result)
{
string test=x.Address.Name1;
}
}
또는 법인 SQL로 :
string queryString = @"SELECT VALUE x FROM SOrder AS x
Order By x.Address.Name1";
using (EntitiesContext ctx = new EntitiesContext())
{
ObjectQuery<SOrder> query =
new ObjectQuery<SOrder>(queryString, ctx).Include("Address");
foreach (SOrder x in query.Execute(MergeOption.AppendOnly))
{
string test=x.Address.Name1;
}
}
을 두 작품 모두! 정렬 된 결과가 표시됩니다.
이제 ListView에서이 정렬 작업을 수행하는 방법이 약간 손실됩니다. 누군가 내가 여기서 잘못하고있는 생각을 가지고 있습니까?
미리 감사드립니다.
+1이 동일한 문제로 나에게 1 톤의 악화를 저장합니다. 이 문제에 대한 해결책을 게시 해 주셔서 감사합니다! –