📄 auditiongobject.aspx.vb
字号:
Imports System
Imports System.Data
Imports System.Data.SqlClient
Public Class AuditiongObject
Inherits clsDataAccess
Protected WithEvents pnlButton As System.Web.UI.WebControls.Panel
Protected WithEvents tblTestObj As System.Web.UI.HtmlControls.HtmlTable
Protected WithEvents btnPermit As System.Web.UI.WebControls.Button
#Region " Web 窗体设计器生成的代码 "
'该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub
#End Region
Public intRowsNum As Int16 '表格行数
Public objCB As CheckBox
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim i As Int16
Dim j, k As Int16
'取得标准编号和用户类型
Session("standardserial") = Request.Params("standardserial")
'取得该标准编号的实验目的
PubStrSql = "select * from TestObj where StandardSerial='" _
& Session("standardserial") & "' "
PubDataAdapter.SelectCommand.CommandText = PubStrSql
PubDataAdapter.Fill(PubDataSet, "TestObj")
Dim dtTable As New DataTable()
dtTable = PubDataSet.Tables("TestObj")
intRowsNum = PubDataSet.Tables("TestObj").Rows.Count
Dim r As New HtmlTableRow()
Dim c As HtmlTableCell
For j = 0 To 2
c = New HtmlTableCell()
If j = 2 Then c.RowSpan = FormatNumber(intRowsNum / 2, 0)
c.Controls.Add(New LiteralControl())
r.Cells.Add(c)
Next
tblTestObj.Rows.Add(r)
For i = 0 To FormatNumber(intRowsNum / 2, 0) - 2
r = New HtmlTableRow()
For j = 0 To 1
c = New HtmlTableCell()
c.Controls.Add(New LiteralControl())
r.Cells.Add(c)
Next
tblTestObj.Rows.Add(r)
Next
''删除数据库中与该标准编号对应的审核数据
If Not IsPostBack Then
PubStrSql = "delete from CheckBoxInfor where StandardSerial='" _
& Session("standardserial") & "'"
PubSqlCmd.CommandText = PubStrSql
PubSqlCmd.ExecuteNonQuery()
End If
k = 0
For i = 1 To FormatNumber(intRowsNum / 2, 0)
For j = 0 To 1
objCB = New CheckBox()
If k = intRowsNum Then Exit For
objCB.ID = "objCB" & (k)
objCB.Text = dtTable.Rows(k).Item("Testobject")
objCB.AutoPostBack = True
If dtTable.Rows(k).Item("Checked") = 1 Then objCB.Checked = True
k = k + 1
tblTestObj.Rows(i).Cells(j).Controls.Add(objCB)
AddHandler objCB.CheckedChanged, AddressOf EventHandler
''将该checkbox的state 存入数据库中的表CheckBoxInfor中
If Not IsPostBack Then
PubStrSql = "insert into CheckBoxInfor values('" _
& Session("standardserial") & "'," & k - 1 & "," _
& dtTable.Rows(k - 1).Item("Checked") & ")"
PubSqlCmd.CommandText = PubStrSql
PubSqlCmd.ExecuteNonQuery()
End If
Next
Next
r = New HtmlTableRow()
c = New HtmlTableCell()
c.ColSpan = 3
c.Align = "center"
c.Controls.Add(New LiteralControl())
r.Cells.Add(c)
tblTestObj.Rows.Add(r)
tblTestObj.Rows(tblTestObj.Rows.Count - 1).Cells(0).Controls.Add(btnPermit)
End Sub
Sub EventHandler(ByVal sender As Object, ByVal e As System.EventArgs)
'定义Checkbox的事件处理程序
Dim TestObjs As String
Dim i, j, NuRows, k, n As Int16
Dim checkboxValue(intRowsNum) As Boolean
Dim checkboxText(intRowsNum) As String
Dim r As HtmlTableRow
Dim c As HtmlTableCell
Dim dtTable As DataTable
Dim tblDetail As New HtmlTable()
Dim intCheckedBoxIndex As Int16 '记录被选中的checkbox的标号
For i = 0 To intRowsNum - 1
objCB = CType(tblTestObj.Controls(1).FindControl("objCB" & CStr(i)), CheckBox)
checkboxValue(i) = objCB.Checked
checkboxText(i) = objCB.Text
Next
'目的:实现判断那个checkbox被选中
'
Dim OldCheckBoxState(intRowsNum) As Int16 '存放checkbox的状态
Dim NewCheckBoxState(intRowsNum) As Int16
PubStrSql = "select * from CheckBoxInfor where StandardSerial='" _
& Session("standardserial") & "' order by CheckBoxNum"
PubDataAdapter.SelectCommand.CommandText = PubStrSql
PubDataAdapter.Fill(PubDataSet, "CheckBoxInfor")
'将CheckBoxInfor表中的内容读入数组
'最新的CheckBox的State信息存放在数组OldCheckBoxState中
For i = 0 To intRowsNum - 1
OldCheckBoxState(i) = PubDataSet.Tables("CheckBoxInfor").Rows(i)("CheckBoxState")
If checkboxValue(i) = True Then
NewCheckBoxState(i) = 1
Else
NewCheckBoxState(i) = 0
End If
Next
'将两个数组作比较,找出哪个checkbox被选中
For i = 0 To intRowsNum - 1
If OldCheckBoxState(i) <> NewCheckBoxState(i) Then
intCheckedBoxIndex = i
Exit For
End If
Next
'将最新的checkBox的State信息写入表CheckBoxInfor
PubStrSql = "update CheckBoxInfor set CheckBoxState=" _
& NewCheckBoxState(intCheckedBoxIndex) & " where StandardSerial='" _
& Session("standardserial") & "' and CheckBoxNum=" & intCheckedBoxIndex
PubSqlCmd.CommandText = PubStrSql
PubSqlCmd.ExecuteNonQuery()
'清空dataset中的内容
PubDataSet.Tables("CheckBoxInfor").Clear()
tblTestObj.Rows(1).Cells(2).InnerText = ""
tblDetail.Border = 0
tblDetail.Align = "center"
tblTestObj.Rows(1).Cells(2).Controls.Add(tblDetail)
k = 0
i = intCheckedBoxIndex
TestObjs = checkboxText(i)
PubStrSql = "select distinct Project from TestProject where TestObj='" _
& TestObjs & "' and StandardSerial='" & Trim(Session("standardserial")) & "'"
PubDataAdapter.SelectCommand.CommandText = PubStrSql
PubDataAdapter.Fill(PubDataSet, "Project")
dtTable = New DataTable()
dtTable = PubDataSet.Tables("Project")
NuRows = dtTable.Rows.Count
r = New HtmlTableRow()
c = New HtmlTableCell()
c.Controls.Add(New LiteralControl())
r.Cells.Add(c)
tblDetail.Rows.Add(r)
tblDetail.Rows(k).Cells(0).InnerText = "实验目的" & TestObjs & "的实验项目是:"
For j = 1 To NuRows
r = New HtmlTableRow()
c = New HtmlTableCell()
c.Controls.Add(New LiteralControl())
r.Cells.Add(c)
tblDetail.Rows.Add(r)
tblDetail.Rows(j + k).Cells(0).InnerText = dtTable.Rows(j - 1).Item("Project")
Next
k = k + NuRows + 1
End Sub
Private Sub btnPermit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPermit.Click
Dim i As Int16
Dim TestObjs As String
Dim checkboxValue(intRowsNum) As Boolean
Dim checkboxText(intRowsNum) As String
For i = 0 To intRowsNum - 1
objCB = CType(tblTestObj.Controls(1).FindControl("objCB" & CStr(i)), CheckBox)
checkboxValue(i) = objCB.Checked
checkboxText(i) = objCB.Text
Next
For i = 0 To intRowsNum - 1
TestObjs = checkboxText(i)
If checkboxValue(i) = True Then
PubStrSql = "select * from TestObj where TestObject='" & TestObjs _
& "' and StandardSerial='" & Session("standardserial") & "'"
PubDataAdapter.SelectCommand.CommandText = PubStrSql
PubDataAdapter.Fill(PubDataSet, "TestObj")
PubDataSet.Tables("TestObj").Rows(0).Item("Checked") = 1
Dim objAutoGen As New SqlCommandBuilder(PubDataAdapter)
PubDataAdapter.Update(PubDataSet, "TestObj")
Else
PubStrSql = "select * from TestObj where TestObject='" & TestObjs _
& "' and StandardSerial='" & Session("standardserial") & "'"
PubDataAdapter.SelectCommand.CommandText = PubStrSql
PubDataAdapter.Fill(PubDataSet, "TestObj")
PubDataSet.Tables("TestObj").Rows(0).Item("Checked") = 0
Dim objAutoGen As New SqlCommandBuilder(PubDataAdapter)
PubDataAdapter.Update(PubDataSet, "TestObj")
End If
Next
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -