2011-12-29 12 views
0

これは私の最初のプロジェクトなので、これをデバッグすることはあまりありません。私はリストビューを持っています。私は手動でコードを記述してlistviewに入力しています。リストビューは非常に大きいので、ユーザーが検索文字列を入力する検索ボタンがあります。私はここからSQLの文字列を構築し、リストビューを作成しようとしています。すべて正常に動作しますが、次のページをクリックすると、検索文字列は含まれません。私はそれが検索条件なしで第2ページを投入していると思う。データポケットベルコントロールを削除しても正常に動作します。私は適切なコードdatapger_PagePropertiesChangingを配置することができません。誰かが私にこれを手伝ってもらえると感謝しています。ここでSearchおよびDataPagerコントロールのリストビュー

は私のリストビューのマークアップです:

  <asp:ListView ID="lvContractors" runat="server" OnPagePropertiesChanging="lvContractors_PagePropertiesChanging"> 
      <LayoutTemplate> 
      <div class="ListViewGrid"> 
       <table class="tblpadding"> 
        <tr> 
         <th class="HeaderStyle"> 
          Contractor Number 
         </th> 
         <th class="HeaderStyle"> 
          First Name 
         </th> 
         <th class="HeaderStyle"> 
          Last Name 
         </th> 
         <th class="HeaderStyle"> 
          View 
         </th> 
         <th class="HeaderStyle"> 
          Edit 
         </th> 
        </tr> 
        <tbody><asp:PlaceHolder runat="server" ID="itemPlaceholder" /></tbody> 

       </table> 
      </div> <!-- End of ListViewGrid --> 

      </LayoutTemplate> 
      <ItemSeparatorTemplate> <td> <hr /> </td> 

      </ItemSeparatorTemplate> 

       <ItemTemplate> 
       <div > 
        <tr> 
         <td class="RowStyle"><%#Eval("ContractorNumber")%></td> 
         <td class="RowStyle"><%#Eval("FirstName")%></td> 
         <td class="RowStyle"><%#Eval("LastName")%></td> 

         <td class="RowStyle"> 
          <asp:HyperLink ID="lnkView" runat="server" CssClass="link" 
           NavigateUrl='<%# "ContractorEdit.aspx?ID=" + Eval("ContractorNumber") + "&Mode=" + "CV" %>' 
           Target="_blank" Text="View" /> 
         </td> 
         <td class="RowStyle"> 
          <asp:HyperLink ID="lnkEdit" runat="server" CssClass="link" 
           NavigateUrl= '<%# "ContractorEdit.aspx?ID=" + Eval("ContractorNumber") + "&Mode=" + "CE" %>' 
           Text="Edit"> </asp:HyperLink> 

        </tr> 
        </div> 
       </ItemTemplate> 
       <AlternatingItemTemplate> 
       <div> 
        <tr> 
         <td class="AlternatingRowStyle"><%#Eval("ContractorNumber")%></td> 
         <td class="AlternatingRowStyle"><%#Eval("FirstName")%></td> 
         <td class="AlternatingRowStyle"><%#Eval("LastName")%></td> 

         <td class="AlternatingRowStyle"> 
          <asp:HyperLink ID="lnkView" runat="server" CssClass="link" 
           NavigateUrl='<%# "Contractor.aspx?ID=" + Eval("ContractorNumber")%>' 
           Target="_blank" Text="View" /> 
         </td> 
         <td class="AlternatingRowStyle"> 
          <asp:HyperLink ID="lnkEdit" runat="server" CssClass="link" 
           NavigateUrl= '<%# "ContractorEdit.aspx?ID=" + Eval("ContractorNumber") + "&Mode=" + "CE" %>' 
           Text="Edit"> </asp:HyperLink> 

        </tr> 
        </div> 

       </AlternatingItemTemplate> 

       <ItemSeparatorTemplate> 
        <tr> 
         <td colspan="5" class="itemseparator"></td> 
        </tr> 
       </ItemSeparatorTemplate> 

    </asp:ListView> 

    <div class="pager"> 
     <asp:DataPager PageSize="20" ID="DataPagerContractor" runat="server" PagedControlID="lvContractors" 
         NextPreviousButtonCssClass="PrevNext" 
         CurrentPageLabelCssClass="CurrentPage" 
         NumericButtonCssClass="PageNumber"> 
      <fields> 
       <asp:NumericPagerField 
         PreviousPageText="&lt; Prev" 
         NextPageText="Next &gt;" 
         ButtonCount="10" 
         NextPreviousButtonCssClass="PrevNext" 
         CurrentPageLabelCssClass="CurrentPage" 
         NumericButtonCssClass="PageNumber" /> 
      </fields> 
     </asp:DataPager> 
     </div> 
</div> Code behind this: Partial Class Contractor 
Inherits System.Web.UI.Page 

Private txtKeywordSearchWhereClause As String = "" 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 


    If Not Page.IsPostBack Then 
     Session("Clicked") = "Contractor" 
    End If 

    If Not DBNull.Value.Equals(txtKeywordSearchWhereClause) Then 
     LoadContractors(txtKeywordSearchWhereClause) 
    Else 
     LoadContractors("") 
    End If 

End Sub 

Private Sub LoadContractors(ByVal strSearch As String) 
    Dim strConn As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("Conn").ConnectionString) 

    strConn.Open() 

    Dim sql As String = "SELECT * FROM tblContractor1" 

    If Not strSearch = "" Then 
     sql = sql & strSearch 
     sql = sql & " ORDER BY LastName" 
    End If 


    Dim da As SqlDataAdapter = New SqlDataAdapter(sql, strConn) 

    Dim dt As DataTable = New DataTable() 

    da.Fill(dt) 

    lvContractors.DataSource = dt 

    lvContractors.DataBind() 
End Sub 



Protected Sub buttonAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles buttonAdd.Click 
    Response.Redirect("ContractorEdit.aspx", False) 
End Sub 

Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSearch.Click 
    ' Keyword Search 

    Dim txtKeywordSearch As String = txtSearch.Text 


    Dim txtWhereClause As String = "" 

    If txtKeywordSearch.Trim() <> "" Then 
     txtWhereClause = " WHERE FirstName LIKE '%" + txtKeywordSearch + "%'" 
     txtWhereClause = txtWhereClause + " OR LastName LIKE '%" + txtKeywordSearch + "%'" 
     txtWhereClause = txtWhereClause + " OR ContractorNumber LIKE '%" + txtKeywordSearch + "%'" 

     txtKeywordSearchWhereClause = txtWhereClause 
    End If 

    LoadContractors(txtKeywordSearchWhereClause) 

End Sub 

Protected Sub lvContractors_PagePropertiesChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.PagePropertiesChangingEventArgs) Handles lvContractors.PagePropertiesChanging 
    DataPagerContractor.SetPageProperties(e.StartRowIndex, e.MaximumRows, False) 
    'rebind List View 
    If Not DBNull.Value.Equals(txtKeywordSearchWhereClause) Then 
     LoadContractors(txtKeywordSearchWhereClause) 
    Else 
     LoadContractors("") 
    End If 
End Sub 

エンドクラス

+0

セッションでもtxtKeywordsearchを保存して(そこから取得しても)ポケットベルが機能する場合は – rene

答えて

0

言って申し訳ありませんが、これはdatapagerでは不可能である(少なくとも、ASP.Netで3.5)。 唯一の解決策は、データページャが渡すことができる唯一のクエリー・ストリング・パラメータとしてページ番号であるため、自分のページャを最初から書き込むことです。

関連する問題