【发布时间】:2014-11-03 19:08:32
【问题描述】:
我有一个带有分页功能的 GridView,并在 Page_Load 上以编程方式对其进行数据绑定。我还有一个搜索按钮,当单击它时,它会绑定到不同的 sql 命令。如果您单击搜索按钮并检索多个页面,并且如果您单击第 2 页,它将检索第一个 Databind() 的数据。如何使用 GridView1.PageIndexChanging 解决这个问题,这是我在第一个 Databind 上用于分页的方法? Anyhelp将不胜感激。它甚至可能吗?
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AutoGenerateColumns="False" PageSize="100">
<Columns>
<asp:BoundField DataField="fldEmployeeID" HeaderText="EmployeeID" />
<asp:BoundField DataField="fldAbsentDate" HeaderText="AbsentDate" />
<asp:BoundField DataField="fldAbsentCode" HeaderText="AbsentCode" />
<asp:BoundField DataField="fldRuleViolationWarningType" HeaderText="Rule Violation Warning" />
<asp:BoundField DataField="fldRuleViolationIssueDate" HeaderText="Rule Violation Issue Date" />
<asp:BoundField DataField="fldLOAEndDate" HeaderText="LOA End Date" />
</Columns>
</asp:GridView>
vb.net
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim SqlDataSource1 As SqlDataSource = New SqlDataSource()
SqlDataSource1.ID = "SqlDataSource1"
Page.Controls.Add(SqlDataSource1)
SqlDataSource1.ConnectionString = "your connection string"
'SqlDataSource1.SelectCommand = "SELECT * FROM [tblAbsences] WHERE [fldEmployeeID]=38"
SqlDataSource1.SelectCommand = "SELECT * FROM [tblAbsences] ORDER BY [fldEmployeeID], [fldAbsentDate], [fldAbsentCode]"
GridView1.DataSource = SqlDataSource1
GridView1.DataBind()
End Sub
Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As GridViewPageEventArgs) Handles GridView1.PageIndexChanging
GridView1.PageIndex = e.NewPageIndex
GridView1.DataBind()
End Sub
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim SqlDataSource2 As SqlDataSource = New SqlDataSource()
SqlDataSource2.ID = "SqlDataSource2"
Page.Controls.Add(SqlDataSource2)
SqlDataSource2.ConnectionString = "your connection string"
SqlDataSource2.SelectCommand = "SELECT * FROM [tblAbsences] WHERE [fldAbsentDate] BETWEEN '7-03-2014' AND '8-21-2014' ORDER BY [fldAbsentDate]"
'SqlDataSource2.SelectCommand = "SELECT * FROM [tblAbsences] ORDER BY [fldEmployeeID], [fldAbsentDate], [fldAbsentCode]";
GridView1.DataSource = SqlDataSource2
GridView1.DataBind()
End Sub
【问题讨论】:
-
当您使用 gridview 分页单击页码时,它会在回发期间触发页面加载事件。这会将 SqlDataSource 更改回 SqlDataSource1。您可以检查它是否正在回发,并告诉它除了 databind() 之外不要执行任何操作...但前提是您不打算在某个时候恢复到 SqlDataSource1。
标签: asp.net vb.net gridview data-binding