2011-09-22 6 views
0

QueryExtender를 사용하는 중 오류 더 많은 필드가 포함 된 Surveyors 테이블에서 3 개의 필드를 가져 오는 EntityDataSource가있는 다음 GridView가 작동하지만, 물론 모든 서베이를 보여줍니다. 'FirstName'이 (가) 'System.Data.Common.DbDatRecord'유형의 구성원이 아닌

<asp:GridView ID="gvwSurveyors" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" CellPadding="3" DataSourceID="edsSurveyors"> 
    <Columns> 
    <asp:BoundField DataField="FirstName" HeaderText="FirstName" ReadOnly="True" SortExpression="FirstName" /> 
    <asp:BoundField DataField="LastName" HeaderText="LastName" ReadOnly="True" SortExpression="LastName" /> 
    <asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True" SortExpression="ID" /> 
    </Columns> 
</asp:GridView> 
<asp:EntityDataSource ID="edsSurveyors" runat="server" 
    ConnectionString="name=PLSOEntities" 
    DefaultContainerName="PLSOEntities" 
    EnableFlattening="False" 
    EntitySetName="Surveyors" 
    Select="it.[FirstName], it.[LastName], it.[ID]" 
    AutoGenerateOrderByClause="true"> 
    <OrderByParameters> 
    <asp:Parameter DefaultValue="LastName" /> 
    </OrderByParameters> 
</asp:EntityDataSource> 

그래서 모든 것을 보여주지하는 초기 페이지로드를 얻기 위해 나는 EntityDataSource에 OnSelecting 이벤트를 추가하고 다시 게시되지 않는 경우는 쿼리를 취소합니다.

protected void edsSurveyors_Selecting(object sender, EntityDataSourceSelectingEventArgs e) { 
    if (!Page.IsPostBack) 
    e.Cancel = true; 
} 

나는 사용자가 스타일과 같은 SQL 쿼리를 사용하여 검색 할 수있는 txtFirstName 및 txtLastName라는 두 개의 텍스트 상자가 있습니다. 웹에서의 일부 독서로 인해 QueryExtender를 향하게되었습니다. 때 나는 오류가 버튼을 클릭 그래서 지금

<asp:GridView ID="gvwSurveyors" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" CellPadding="3" DataSourceID="edsSurveyors"> 
    <Columns> 
    <asp:BoundField DataField="FirstName" HeaderText="FirstName" ReadOnly="True" SortExpression="FirstName" /> 
     <asp:BoundField DataField="LastName" HeaderText="LastName" ReadOnly="True" SortExpression="LastName" /> 
     <asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True" SortExpression="ID" /> 
    </Columns> 
    </asp:GridView> 
    <asp:EntityDataSource ID="edsSurveyors" runat="server" 
    ConnectionString="name=PLSOEntities" 
    DefaultContainerName="PLSOEntities" 
    EnableFlattening="False" 
    EntitySetName="Surveyors" 
    Select="it.[FirstName], it.[LastName], it.[ID]" 
    AutoGenerateOrderByClause="true" onselecting="edsSurveyors_Selecting"> 
    <OrderByParameters> 
     <asp:Parameter DefaultValue="LastName" /> 
    </OrderByParameters> 
    </asp:EntityDataSource> 
    <asp:QueryExtender ID="qexSurveyor" runat="server" TargetControlID="edsSurveyors"> 
    <asp:SearchExpression SearchType="Contains" DataFields="FirstName"> 
     <asp:ControlParameter ControlID="txtFirstName" /> 
    </asp:SearchExpression> 
    </asp:QueryExtender> 

: 나는 다음에 코드를 변경 'FIRSTNAME은'System.Data.Common.DbDataRecord '

유형의 구성원이 아닌 무엇 내가 Contains를 허용하도록 할 수 있습니까? 작동하면 LastName 매개 변수가 추가됩니다.

답변

1

AdventureWorks를 데이터 원본으로 사용할 때도 같은 결과가 나타납니다. 내 'EntityDataSource'에서 'Select ='를 제거해야했습니다. 해결 방법은 GridView에 가서 AutoGenerateColumns = "False"로 설정합니다. 그런 다음 Gridview에 표시하고자하는 각 열을 수동으로 추가했습니다. 추가 참고로

 <asp:BoundField DataField="CustomerID" HeaderText="Customer ID" /> 
     <asp:BoundField DataField="SalesPerson" HeaderText="Sales Person" /> 
     <asp:BoundField DataField="CustomerID" HeaderText="Customer ID" /> 
     <asp:BoundField DataField="FirstName" HeaderText="First Name" /> 
     <asp:BoundField DataField="LastName" HeaderText="Last Name" /> 
     <asp:BoundField DataField="CompanyName" HeaderText="Company Name" /> 
     <asp:BoundField DataField="EmailAddress" HeaderText="Email Address" /> 
     <asp:BoundField DataField="Phone" HeaderText="Phone" /> 

, 프로그래밍 방식이기는하지만 onquerycreated 이벤트를 사용하여 EntityDataSource에 LINQ 쿼리를 적용하는 또 다른 해결 방법 것 같다. 이 경우, Query Extender를 선언적으로 사용할 필요는 없습니다. 전체 기사보기 -> http://msdn.microsoft.com/en-us/library/ee404748.aspx

0

현재 동일한 문제가 발생합니다. EntityDataSource에서 '선택 ='을 제거하면 작동하지 않습니다. QueryExtender를 사용할 때 모두를 선택해야합니다. 그러나 나는 테이블에있는 모든 필드를 반환하고 싶지 않으며 아직 이것에 대한 방법을 찾지 못했습니다.

그럼 누구 한테 해결 방법이 있습니까?

관련 문제