2010-01-20 3 views
0

내 목표는 검색 상자를 partsearch.aspx 페이지에 배치하는 것입니다. 검색 상자에는 텍스트 상자와 드롭 다운 목록이 포함됩니다. 드롭 다운 목록에는 PartName 또는 NSN이라는 두 항목이 있는데, 이는 내 데이터베이스 쿼리의 where 절에서 사용해야합니다. PartName이 선택된 값이면 쿼리는 해당 필드를 기반으로해야합니다. NSN이 선택된 값이면 쿼리는 NSN 필드에서 텍스트 상자의 내용 인 txtSearch를 검색해야합니다. ASP에서 두 개의 필드 중 하나를 사용하여 데이터베이스 테이블을 검색하는 방법 : 텍스트 상자 및 LINQ를 엔터티

나는이 내 페이지에 다음 코드 :

<asp:Label runat="server" ID="lblSearch" CssClass="black-normal-txt">Search by Part Name or NSN:</asp:Label> 
<asp:TextBox runat="server" ID="txtSearch" CssClass="txtSearch swap_value" Text="Search for Parts"></asp:TextBox> 
<asp:DropDownList runat="server" ID="ddlsearch" CssClass="black-normal-txt"> 
<asp:ListItem>Part Name</asp:ListItem> 
<asp:ListItem>NSN</asp:ListItem></asp:DropDownList> 
<asp:Button runat="server" ID="btnSubmit" Text="Search" /> 

코드 숨김 보이는 같은 :

오류 2 과부하 해상도는 더 접근하기 때문에 실패 : 나는 다음과 같은 오류가 발생

Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit.Click 
    Using PartEntities As New diel_inventoryEntities() 
     Dim Parts = PartEntities.PartList 
     Dim query = From PartList In Parts 

     If (ddlsearch.selecteditem.tostring() = "PartName") Then 
      query = query.Where(Function(t) t.PARTNAME.Contains(txtSearch)) 
     ElseIf (ddlsearch.selecteditem.tostring() = "NSN") Then 
      Query = Query.where(Function(t) t.NSN.Contains(txtSearch)) 
     End If 
    End Using 
End Sub 

'Where'는 다음 인수를 사용하여 호출 할 수 있습니다. 확장 메서드 'Public Function Where (predicate As System.Func (Of Diel_inventoryModel.PartList, Intege System.Collections.Generic.IEnumerable (Of Diel_inventoryModel.PartList) '이 (가)'System.Linq.Enumerable '에 정의 된대로 : 중첩 된 함수의 delegate'System.Func과 동일한 서명이 없습니다. (Of Diel_inventoryModel.PartList, 정수, 부울) '. 확장 메서드 'Public Function Where'(System.Cinlections.Generic.IEnumerable (Of Diel_inventoryModel.PartList) '가'System.Linq.Enumerable '에 정의 된대로 System.Func (Of Diel_inventoryModel.PartList, Boolean) 'Public Function Contains (value as String as As Boolean)': 'System.Web.UI.WebControls.TextBox'유형의 값을 'String'으로 변환 할 수 없습니다. 'System.Linq.Enumerable'에 정의 된 확장 메서드 'Public Function Contains (Value as Char) As Boolean'이 'System.Web.UI.WebControls.TextBox'형식의 값을 'Char'로 변환 할 수 없습니다. 확장 메서드 public function Where (System.Linq.Expressions.Expression (Of Diel_inventoryModel.PartList, Integer, Boolean))) '에서 정의 된대로 System.Linq.IQueryable (Of Diel_inventoryModel.PartList) System.Linq.Queryable ': 중첩 된 함수의 delegate'System.Func (Of Diel_inventoryModel.PartList, Integer, Boolean) '과 동일한 서명이 없습니다. 확장 메서드 'Public Function Where (System.Linq.Expressions.Expression (Of Diel_inventoryModel.PartList, Boolean))))'시스템에서 정의 된 System.Linq.IQueryable (Of Diel_inventoryModel.PartList) Linq.Queryable ': 액세스 할 수있는'포함 '이이 인수로 호출 할 수 없기 때문에 오버로드 확인에 실패했습니다. '공용 함수에 (값을 문자열로) As Boolean '이 포함되어 있습니다.'System.Web.UI.WebControls.TextBox '형식의 값이 없습니다. 'String'으로 변환하십시오. 'System.Linq.Enumerable'에 정의 된 확장 메서드 'Public Function Contains (Value as Char) As Boolean'이 'System.Web.UI.WebControls.TextBox'형식의 값을 'Char'로 변환 할 수 없습니다. c : \ inetpub \ wwwroot \ mydomain.com \ PartSearch.aspx.vb 15 25 http://localhost/mydomain.com/

이 오류에 익숙한 사람이 있습니까? 그렇다면 어떻게 진단하고 수정합니까?

도움과 도움을 제공해 주셔서 감사합니다.

답변

2

VB 기본 속성에 의존하지 마십시오 (아직 VB.NET에있는 속성을 사용하는지는 모르지만 한동안 사용하지 않았 음). 직접 TextBox 제어에 Text 속성을 사용 : 나는 다시,이 변화를 만들어 페이지를 볼 Contains(txtSearch.Text)

Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) 

Handles btnSubmit.Click 
    Using PartEntities As New diel_inventoryEntities() 
     Dim Parts = PartEntities.PartList 
     Dim query = From PartList In Parts 

     If (ddlsearch.selecteditem.tostring() = "PartName") Then 
      query = query.Where(Function(t) t.PARTNAME.Contains(txtSearch.Text)) 
     ElseIf (ddlsearch.selecteditem.tostring() = "NSN") Then 
      Query = Query.where(Function(t) t.NSN.Contains(txtSearch.Text)) 
     End If 
    End Using 
End Sub 
+0

.수신 : ObjectContext는 1) ContextTypeName 정의, 2) ConnectionString 및 DefaultContainerName 정의, 3) ContextType 정의 또는 4) OnSelecting 이벤트에서 제공해야합니다. 또한 End If 다음에 End Using 다음에 gvResults.DataBind()를 추가했습니다. – SidC

+0

당신은 EntityDataSource를 사용하고 있습니까? –

+0

예. 나는 masterpage 대신 페이지 자체에 하나를 가지고있다. – SidC

관련 문제