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