我的带有gridview的vb.net程序有一个非常复杂的变量查询,它基于先前编程的选择,所以数据源代码在代码隐藏中以及模板字段的各种私有函数:
Dim SqlDataSource1 As New SqlDataSource()
SqlDataSource1.ID = "SqlDataSource1"
Me.Page.Controls.Add(SqlDataSource1)
SqlDataSource1.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings("NativePlantsTESTConnectionString").ConnectionString
SqlDataSource1.SelectCommand = TheQuery 'built elsewhere & populated in this prog
Me.gvPlantList.DataSource = SqlDataSource1
Me.gvPlantList.DataBind()
listplants.aspx上的按钮代码:
<asp:Button ID="btnPrint" runat="server" Text="Print-Ready Selected Plants" />
并在代码隐藏中:
Protected Sub btnPrint_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnPrint.Click
Dim SessName, Dest As String
Me.lblErrMsg.Visible = False
Dim Ctr As Integer
Dim TheToken As String
For Each row As GridViewRow In gvPlantList.Rows
If row.RowType = DataControlRowType.DataRow Then
Dim cbRow As CheckBox = TryCast(row.Cells(0).FindControl("cbPrint"), CheckBox)
If cbRow.Checked Then
Ctr = Ctr + 1
If Ctr > 10 Then
Me.lblErrMsg.Text = "TOO MANY PLANTS - Currently limited to 10"
Me.lblErrMsg.Visible = True
Exit Sub
End If
TheToken = CType(row.Cells(4).FindControl("lblToken"), Label).Text
SessName = "Print" & Ctr
Session(SessName) = TheToken
End If
End If
Next
If Ctr = 0 Then
Me.lblErrMsg.Text = Me.lblErrMsg.Text & "Please check the plants you wish to print, up to 10 max"
Me.lblErrMsg.Visible = True
Exit Sub
End If
Dest = "printcards.aspx"
Response.Redirect(Dest)
当选择程序进入列表prog以显示结果时,它上面有一个标准的asp按钮,用于显示所选项目。但是,该按钮不会在IE8或11中触发,但它在Visual Studio调试器,Chrome和Firefox中运行良好。我在这里阅读了大部分相关问题,但没有看到这个问题。
我添加了临时回发检查代码(我以为我读过某些地方回复并不总能正常使用gridviews,但可能是错误的),并且aspx上的临时标签显示正在发生的事情是正确的“第一次在“和”是回发“显示。我看到除IE之外的所有内容都是正确的值,它永远不会超出“第一次”。
有趣的是,据我所知,这只发生在我们的网络服务器上,并且它可以在IE中为外部其他人正常工作,这让我觉得我们的服务器上有一些影响这个的东西。其他人建议我们的代理服务器上的更改可能使得IE正在为页面的初始命中获得缓存页面,但是由于某些新规则,回发无法通过,但如果是是这样的,只会影响gridview页面吗?初始选择页面按钮工作正常,以便有点理解。
该网站是http://www.albemarle.org/nativeplantstest,如果有人想尝试,那么我们失败的程序就是listplants.aspx。
谢谢!
伊莱恩