Asp.Net系统刷新页面频繁出错,寻求帮助。
我的一个不复杂的库存数据查询页面,反复刷新时,偶尔会有黄色错误页面,按工具栏再刷新又显示出正常查询结果。
Dugub信息显示是:DataBinder.Eval:“System.Data.DataRowView”不包含名称为 商品代号 的属性。。
在多台机共享ADSL上网的网络访问,更是频繁。开发时单机调试从来没有碰到这个问题。程序中数据链接每次查询完我都关闭的。服务器Win2003+SQL2000SP3,双1.8G+RAID5+2GB内存+1M光纤接入,单独运行该Asp.Net系统。
'函数:从数据库中获取数据集
'参数:SqlStr-SQL查询字符串
'返回:DataSet-数据集
Public Function GetDataFromDB(ByVal sqlstr As String) As DataSet
Dim DataConnection As New SqlConnection(ConnectStr)
Dim DataAdapter As New SqlDataAdapter(sqlstr, DataConnection)
Dim DataSet As New DataSet
Try
DataSet.Clear()
DataAdapter.Fill(DataSet)
If Not DataSet Is Nothing Then
Return DataSet
End If
Catch
Return Nothing
Finally
DataConnection.Close()
End Try
End Function
-------页面代码---------------
Public strSqlInfo As String
Public Ds As New DataSet
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
If Not IsPostBack Then
'判断是否正常登录进入
If Request.Cookies("归属单位").Value = "" Then Response.Redirect("../Default.Aspx")
DataGridInfo.DataSource = GetDataFromDB("Select TOP 1 * From 视图_库存视图 Where 1<>1")
DataGridInfo.DataBind()
'填充类别树
TreeViewinfo.Nodes.Clear()
Ds.Clear()
Ds = GetDataFromDB("Select * From 商品类别表 Order By 类别代号")
IntiTree(TreeViewinfo.Nodes, "0")
'填充可选择的仓库
DrpListSKU.DataSource = GetDataFromDB("Select 仓库名称 From 字典_仓库表 ")
DrpListSKU.DataBind()
Else
Dim strNode As String '树型节点名称
Dim strAskInfo As String
'获取商品类型节点
strNode = TreeViewinfo.GetNodeFromIndex(TreeViewinfo.SelectedNodeIndex).ID.ToString
'检查是否有查询内容
If Trim$(TxtBoxAsk.Text) = "" Then
strAskInfo = "%"
strSqlInfo = " Where 类别代号 Like '" + strNode + "%' And 仓库名称='" + DrpListSKU.SelectedValue.ToString + "'"
Else
strAskInfo = "%" + Trim$(TxtBoxAsk.Text) + "%"
strSqlInfo = " Where 仓库名称='" + DrpListSKU.SelectedValue.ToString + "'" _
+ " And (商品名称 Like '" + strAskInfo + "' Or 商品型号 Like '" + strAskInfo + "' " _
+ " Or 商品规格 Like '" + strAskInfo + "' Or 五笔代码 Like '" + strAskInfo + "' Or 拼音代码 Like '" + strAskInfo + "') "
End If
'判断是否只显示数量>0的商品
If ChkHasSKU.Checked = True Then
strSqlInfo = strSqlInfo + " And (库存<>0 Or 预订<>0) "
End If
End If
End Sub
'功能:递归填充TreeView树/该模块已测试完全正常
Private Sub IntiTree(ByRef Nds As Microsoft.Web.UI.WebControls.TreeNodeCollection, ByVal ParentId As String)
Dim dv As New DataView
Dim drv As DataRowView
Dim tmpNd As Microsoft.Web.UI.WebControls.TreeNode
Dim strId As String
dv.Table = Ds.Tables(0).DefaultView.Table
dv.RowFilter = "父类别='" & ParentId & "'"
For Each drv In dv
tmpNd = New Microsoft.Web.UI.WebControls.TreeNode
strId = drv("类别代号")
tmpNd.ID = strId
tmpNd.Text = drv("类别名称")
'tmpNd.ImageUrl = drv("ICON").ToString
Nds.Add(tmpNd)
IntiTree(Nds(Nds.Count - 1).Nodes, strId)
Next
End Sub
Private Sub BtnAsk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAsk.Click
'清除显示和选择
DataGridInfo.SelectedIndex = -1
DataGridInfo.CurrentPageIndex = 0
DataGridInfo.DataSource() = GetDataFromDB("Select * From 视图_库存视图 " + strSqlInfo + " Order BY 商品名称")
DataGridInfo.DataBind()
End Sub
Private Sub DataGridInfo_PageIndexChanged1(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles DataGridInfo.PageIndexChanged
'清除显示和选择
DataGridInfo.SelectedIndex = -1
DataGridInfo.CurrentPageIndex = e.NewPageIndex
DataGridInfo.DataSource() = GetDataFromDB("Select * From 视图_库存视图 " + strSqlInfo + " Order BY 商品名称")
DataGridInfo.DataBind()
End Sub