⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 geneditadd_chap7.vb

📁 聊天 聊天 聊天 聊天 聊天 聊天
💻 VB
字号:
Option Strict Off
Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Data
Imports System.Data.OleDb
Imports Microsoft.VisualBasic
Namespace Generic_Chap7
Public Class GenEditAdd_Chap7 : Inherits Control : Implements INamingContainer
Private ls_display as string
Private ls_where as string
Private ls_sql as string
Private ls_ConnStr as string
Private ls_keyField as string
Private ls_keyValue as string
Private ls_procedure as string
Private ls_exitpage as string  
Private lt_datatable as datatable
Private ls_mode as string
Protected mytbl as table
Public Property Mode as string
	Get
		Return Cstr(ViewState("ls_mode"))
	End Get
	Set
		ViewState("ls_mode") = value
	End Set
End Property
Public Property ExitPage as string
	Get
		Return Cstr(ViewState("ls_exitpage"))
	End Get
	Set
		ViewState("ls_exitpage") = value
	End Set
End Property
Public Property t as datatable 
	Get
		Return lt_datatable
	End Get
	Set
		lt_datatable = value
	End Set
End Property
Public Property KeyField as string 
	Get
		Return Cstr(ViewState("ls_keyfield"))
	End Get
	Set
		ViewState("ls_keyfield") = value
	End Set
End Property
Public Property KeyValue as string 
	Get
		Return Cstr(ViewState("ls_keyvalue"))
	End Get
	Set
		ViewState("ls_keyvalue") = value
	End Set
End Property

Public Property Procedure as string 
	Get
		Return Cstr(ViewState("ls_procedure"))
	End Get
	Set
		ViewState("ls_procedure") = value
	End Set
End Property
     
 Public Property display as string 
	Get
		Return Cstr(ViewState("ls_display"))
	End Get
	Set
		ViewState("ls_display") = value
	End Set
End Property
Public Property Where as string 
	Get
		Return Cstr(ViewState("ls_where"))
	End Get
	Set
		ViewState("ls_where") = value
	End Set
End Property
Public Property SQL as string 
	Get
		Return Cstr(ViewState("ls_sql"))
	End Get
	Set
		ViewState("ls_sql") = value
	End Set
End Property
Public Property ConnStr as string 
	Get
		Return Cstr(ViewState("ls_ConnStr") )
	End Get
	Set
		ViewState("ls_ConnStr")  = value
	End Set
End Property
Protected Overrides Sub CreateChildControls()
		Dim dv as DataView
		Dim myConnection As OleDbConnection
		Dim myCommand    As OleDbDataAdapter
		Dim ds           As New DataSet
		Dim vSql as string
		If len(Where) < 1 then
		'If where = "" then
			vSql = SQL
			mode = "insert"
		Else
			vSql = SQL + Where
			mode = "update"
		End If
		myConnection = New OleDbConnection(ConnStr)    
		myCommand = New OleDbDataAdapter(vSql, myConnection)
		myCommand.Fill(ds, "vtable")
		dv = new DataView(ds.Tables("vtable"))
		   Dim Fields as Integer
		   'Dim t As DataTable
		   t = dv.Table
		   Dim r As DataRow
		   Dim c As DataColumn
		   Dim cell as TableCell
		   Dim row as DataRow
		   Dim Fieldscount as integer 
		   Dim s as string
		   Dim vdisplay as string
		   vDisplay = Display + "000000000000000000000000000000000000000000"
		   FieldsCount = 0
		   s = "<A HREF=" + ExitPage + ">Back</A>"
		   me.Controls.Add(new LiteralControl(s))
		   me.Controls.Add(new LiteralControl("<table bgcolor ='antiquewhite' style='font: 8pt verdana'>"))
		   me.Controls.Add(new LiteralControl("<tr>"))
		   If mode = "insert" then
		   	me.Controls.Add(new LiteralControl("<td colspan='2' bgcolor='#aaaadd' style='font:10pt verdana'>Add a New Record:</td>"))
		   Else
			me.Controls.Add(new LiteralControl("<td colspan='2' bgcolor='#aaaadd' style='font:10pt verdana'>Edit Record:</td>"))
		   End if
		   me.Controls.Add(new LiteralControl("</tr>"))
		   If mode = "update" then
		      For Each r in t.Rows
			      For Each c in t.Columns
			      'Don't show this field
			      IF  vdisplay.chars(FieldsCount) = "0" or c.ToString = KeyField then
			      Else
				      me.Controls.Add(new LiteralControl("<tr>"))
				      'label
				      me.Controls.Add(new LiteralControl("<td>"))
				      me.Controls.Add(new LiteralControl(c.ToString))
				      me.Controls.Add(new LiteralControl("</td>"))	
				     'value
				     me.Controls.Add(new LiteralControl("<td>"))
				     Dim Box As New TextBox
				     Box.Text = r(c).ToString
				     Box.ID = c.ToString
				     me.Controls.Add(box) 
				     me.Controls.Add(new LiteralControl("</td>"))	
         	     	     end if	
         	     	 FieldsCount = FieldsCount + 1
         	     	Next c
		     Next r   
		  Else  ' Insert Mode
				For Each c in t.Columns
				  IF  vdisplay.chars(FieldsCount) = "0" or c.ToString = KeyField then
				  Else
				      me.Controls.Add(new LiteralControl("<tr>"))
				      'label
				      me.Controls.Add(new LiteralControl("<td>"))
				      me.Controls.Add(new LiteralControl(c.ToString))
				      me.Controls.Add(new LiteralControl("</td>"))	
				     'value
				     me.Controls.Add(new LiteralControl("<td>"))
				     Dim Box As New TextBox
				     Box.ID = c.ToString
				     me.Controls.Add(box) 
				     me.Controls.Add(new LiteralControl("</td>"))	
				 End if
				 FieldsCount = FieldsCount + 1
				Next c
		  End If
		 me.Controls.Add(new LiteralControl("</tr>"))
		   me.Controls.Add(new LiteralControl("</Table>"))
		'--------add button
	   Dim AddButton As New Button
	   if mode = "insert" then
	   	AddButton.Text = "Add"
	   else
	   	AddButton.Text = "Update"
	   end if
	   AddHandler AddButton.Click, AddressOf AddBtn_Click
           Me.Controls.Add(AddButton)
	   Dim cancel As New Button
	   cancel.Text = "Cancel"
	   Me.Controls.Add(cancel)
        End Sub
	Private Sub AddBtn_Click(Sender As Object, E As EventArgs)
	   'Dim tb As TextBox
	   'tb = me.FindControl("id")
	   'me.Controls.Add(new LiteralControl(tb.text))
	   'Build the procedure call
	   Dim s as String 	  
	   Dim r As DataRow
	   Dim c As DataColumn
	   Dim cell as TableCell
	   Dim row as DataRow
	   Dim column as string
	   Dim Value as string
	   Dim Fieldscount as integer 
	   Dim vdisplay as string
	   vDisplay = Display + "000000000000000000000000000000000000000"
	   FieldsCount = 0
	   s = "Execute " + procedure + ""
	  If mode = "update" then
		  For Each r in t.Rows
		      For Each c in t.Columns
			IF  vdisplay.chars(FieldsCount) = "0" or c.ToString = KeyField then
			Else
				Dim tb As TextBox
				tb = me.FindControl(c.ToString)
				column = c.ToString
				Value = tb.text
				If c.DataType.ToString = "System.String" Then
					s = s + " @" + column + "='" + value + "', " 
				Else 
					s = s + " @" + column + "=" + value + ", " 
				End If
			End IF
			 FieldsCount = FieldsCount + 1
		    Next c
		  Next r   
		  s = s + "@" + KeyField + "=" + KeyValue
		  me.Controls.Add(new LiteralControl(s))
		  RunSql(s)
	 Else
	 	For Each c in t.Columns
			IF  vdisplay.chars(FieldsCount) = "0" or c.ToString = KeyField then
			Else
				Dim tb As TextBox
				tb = me.FindControl(c.ToString)
				column = c.ToString
				Value = tb.text
				If c.DataType.ToString = "System.String" Then
					s = s + " @" + column + "='" + value + "', " 
				Else 
					s = s + " @" + column + "=" + value + ", " 
				End If
			End IF
			 FieldsCount = FieldsCount + 1
		   Next c
	 	  s = s + "@" + KeyField + "=NULL" 
		 me.Controls.Add(new LiteralControl(s))	 
	 	 RunSql(s)
	 End if
	End Sub
Sub RunSql(vSql as string)
	try
	Dim s as string			
	Dim myConnection As OleDbConnection
	myConnection = New OleDbConnection(ConnStr) 
	Dim mycommand As New OleDbCommand(vsql,myConnection)
	myconnection.Open()
	myCommand.ExecuteNonQuery()
	myconnection.Close()
	Catch ex As OleDbException
		     ' SQL error
		     Dim errItem   As OleDbError
		     Dim errString As String
		     Dim s as string
		     For Each errItem In ex.Errors
			 errString += ex.Message + "<br/>"
		     Next
		     s = "<br/><br/>SQL Error.Details follow:<br/>" & errString
		     me.Controls.Add(new LiteralControl(s))
	 catch myException as Exception
		  me.Controls.Add(new LiteralControl("Exception: " + myException.ToString()))
	end try
End sub
    End Class
End Namespace

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -