2011-03-09 2 views
3

Gridview에 표시 할 데이터베이스의 레코드를 검색하는 ObjectDataSource에 바인딩 된 gridview가 있습니다. 레코드를 반환하는 절차는 검색 문자열을 가져와 관련 결과를 표시합니다.Gridview를 사용하여 데이터베이스에서 빈 반환을 처리하는 방법은 무엇입니까?

enter image description here

: 데이터베이스에서 결과가없는 그러나 때 데이터베이스에서 모든 레코드를 반환하는 경우로 아래의 그림과 같이, 나는, 하단의 페이지 번호와 함께 빈의 gridview를 얻을 수 EmptyDataText 및 EmptyDataTemplate 속성을 모두 설정했지만 결과가 없을 때는 표시되지 않습니다.

누구에게 무슨 일이 일어나고 있는지 알고 계십니까?

 protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e) 
    { 
     if (!String.IsNullOrEmpty(this.txtSearchBox.Text)) 
     { 
      e.InputParameters["searchExpression"] = "%" + this.txtSearchBox.Text + "%"; 
     } 
     else return; 

    } 

그리고 데이터를 가져 오는에 대한 코드 :

  cmd.AddParameter("searchExpression", searchExpression); 
      cmd.AddParameter("sortExpression", sortColumn); 
      cmd.AddParameter("startRowIndex", startRowIndex); 
      cmd.AddParameter("maximumRows", maximumRows); 

      DataSet ds = new DataSet(); 
      SqlDataAdapter da = new SqlDataAdapter(cmd); 
      da.Fill(ds); 

      DataTable dt = ds.Tables[0]; 

      int i = dt.Rows.Count; 

      return ds.Tables[0]; 
을 여기
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" EnablePaging="True" SelectCountMethod="GetUsersCount" 
     SelectMethod="GetUsers" SortParameterName="sortColumn" TypeName="WebsiteBuilder.Core.UUser" 
     OnSelecting="ObjectDataSource1_Selecting"> 
     <SelectParameters> 
      <asp:Parameter Name="searchExpression" Type="String" DefaultValue="" /> 
     </SelectParameters> 
    </asp:ObjectDataSource> 

<asp:GridView ID="grdUsers" runat="server" CssClass="grdUsers" AutoGenerateColumns="false" 
     OnDataBound="grdUsers_DataBound" DataSourceID="ObjectDataSource1" AllowPaging="true" 
     AllowSorting="true" OnRowCommand="grdUsers_RowCommand" PageSize="5" EmptyDataText="No Results"> 
     <PagerSettings FirstPageText="First" LastPageText="Last" Mode="NumericFirstLast" 
      PageButtonCount="5" Position="Bottom" /> 
     <PagerStyle CssClass="pagination" HorizontalAlign="Center" VerticalAlign="Middle" /> 
     <EmptyDataTemplate>No Results</EmptyDataTemplate>` 

이 (가) 선택 이벤트에 대한 코드입니다 : 여기

은 ObjectDataSource를과의 GridView에 대한 ASP의

내가 디버그에서 값을 0으로 확인할 때 내 질문은 왜 gridview EmptyD 표시하지 않습니다 ataTemplate 및 행이 없을 때 여러 페이지 번호를 표시하는 이유

+0

데이터를 Gridview에 바인딩하는 데 사용하는 방법을 표시 할 수 있습니까? –

+0

Davide의 의견 외에도 귀하는 절차를 실행하여 실제로 반환되는 것이 없음을 결정 했습니까? – Chuck

+0

네, 반환되는 행의 수를 얻었습니다. 또한 0입니다. 또한 디버그에서 실행하고 그리드의 페이지 수 속성을 확인한 후 예상대로 0으로 설정되었습니다. 바인드를 보여주기 위해 질문을 편집 할 것입니다. – ryanthescot

답변

0

난 그냥 개인적으로

0

은 if 등은 "없음 결과"레이블을 표시, 즉, 적절한 논리를 수행의 GridView를 숨기기 위해 OnDataBound 이벤트를 사용하여 다음의 GridView로 설정 빈 결과를 결합, 그리고 것 데이터 소스가 null이거나 비어 있습니다. 그리드에 바인딩하지 않습니다.

관련 문제