Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 带有搜索和数据寻呼机控件的Listview_Asp.net_Vb.net_Datapager - Fatal编程技术网

Asp.net 带有搜索和数据寻呼机控件的Listview

Asp.net 带有搜索和数据寻呼机控件的Listview,asp.net,vb.net,datapager,Asp.net,Vb.net,Datapager,由于这是我的第一个项目,我真的没有太多的想法来调试这个。我有一个列表视图。我正在手动编写代码来填充listview。由于listview非常大,我有一个搜索按钮,用户在其中输入搜索字符串。我试图从这里构建一个sql字符串并填充listview。一切正常,但当我点击下一页时,它不包括搜索字符串。我认为这只是填充第二页,没有搜索条件。如果我删除数据寻呼机控件,它可以正常工作。我无法将正确的代码放入datapger_页面属性更改。如果有人能帮我,我将不胜感激 以下是我的列表视图标记: 承包商编号 名

由于这是我的第一个项目,我真的没有太多的想法来调试这个。我有一个列表视图。我正在手动编写代码来填充listview。由于listview非常大,我有一个搜索按钮,用户在其中输入搜索字符串。我试图从这里构建一个sql字符串并填充listview。一切正常,但当我点击下一页时,它不包括搜索字符串。我认为这只是填充第二页,没有搜索条件。如果我删除数据寻呼机控件,它可以正常工作。我无法将正确的代码放入datapger_页面属性更改。如果有人能帮我,我将不胜感激

以下是我的列表视图标记:


承包商编号
名字
姓
看法
编辑

背后的代码:部分类承包商 继承System.Web.UI.Page Private txtKeywordSearchWhereClause As String=“” 受保护的子页加载(ByVal sender作为对象,ByVal e作为System.EventArgs)处理Me.Load 如果不是Page.IsPostBack,则 会话(“点击”)=“承包商” 如果结束 如果不是DBNull.Value.Equals(txtKeyWordSearchWhere子句),则 LoadContractors(TXTKeywordSearchWhere条款) 其他的 装货承包商(“”) 如果结束 端接头 私人分包商(ByVal STREARCH作为字符串) Dim strConn As SqlConnection=新的SqlConnection(ConfigurationManager.ConnectionString(“Conn”).ConnectionString) strConn.Open() Dim sql As String=“从tblContractor1中选择* 如果不是strSearch=“”,则 sql=sql&strearch sql=sql&“按姓氏排序” 如果结束 Dim da As SqlDataAdapter=新的SqlDataAdapter(sql,strConn) 作为数据表的Dim dt=新数据表() da.填充(dt) lvcontactors.DataSource=dt lvc.DataBind() 端接头 受保护的子按钮添加d_Click(ByVal sender作为对象,ByVal e作为System.EventArgs)处理按钮添加。单击 重定向(“ContractorEdit.aspx”,False) 端接头 受保护的子BTN搜索\单击(ByVal sender作为对象,ByVal e作为System.EventArgs)处理BTN搜索。单击 '关键字搜索 Dim txtKeywordSearch As String=txtSearch.Text Dim TXTHERE子句作为字符串=“” 如果txtKeywordSearch.Trim()“”则 txtwereclause=“WHERE FirstName类似“%”+txtKeywordSearch+“%”” txtWhereClause=txtWhereClause+“或类似“%”+txtKeywordSearch+“%”的姓氏 txtWhereClause=txtWhereClause+“或类似“%”“+txtKeywordSearch+“%”的合同编号 txtKeywordSearchWhere子句=txtWhere子句 如果结束 LoadContractors(TXTKeywordSearchWhere条款) 端接头 受保护的分包商\u页面属性更改(ByVal sender作为对象,ByVal e作为System.Web.UI.WebControl.PagePropertiesChangingEventArgs)处理lvContractors.PagePropertiesChanging DataPagerContractor.SetPageProperties(例如StartRowIndex、e.MaximumRows、False) '重新绑定列表视图 如果不是DBNull.Value.Equals(txtKeyWordSearchWhere子句),则 LoadContractors(TXTKeywordSearchWhere条款) 其他的 装货承包商(“”) 如果结束 端接头

很抱歉,在datapager中这是不可能的(至少在ASP.NET3.5中是不可能的)。
唯一的解决方案是从头开始编写自己的寻呼机,因为数据寻呼机可以传递的唯一查询字符串参数是页码。

如果您也在会话中存储txtKeywordsearch(并从会话中检索),则寻呼机将工作
         <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