谢谢各位!按zsww()的意见,DataGrid可以显示了。 其实,原本的代码是写在test.aspx.vb中的,为了简化才合并的。其实,在这里page_load是没有执行,在我的原始代码里,是可以显示的。由于我的理解问题,可能引起误会了。其实,问题是这样的:页面上有个查询输入,用DataGrid显示查询结果,点击DataGrid的Edit进行修改相应内容,但实际结果是:点击EDI后,DataGrid不见了! test.aspx.vb: Imports System.Data Imports System.Data.SqlClient Imports System.Globalization Imports AccessibilityPublic Class EditSelectShip Inherits System.Web.UI.Page#Region " Web 窗体设计器生成的代码 " ... #End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '在此处放置初始化页的用户代码 Page.RegisterStartupScript("focus", "<script>document.all.EN.focus()</script>") If Not (IsPostBack) Then BindGrid() End If End Sub Private Sub Submit_Click(ByVal Sender As Object, ByVal E As EventArgs) Handles Sumbit.Click Dim cnConn As SqlConnection cnConn = New SqlConnection(ConfigurationSettings.AppSettings("zLink")) Dim ds As DataSet Dim SQLselect As String = "SELECT 编号,英文船名,中文船名,船东,船代 FROM ShipInfo WHERE 英文船名 LIKE @EN OR 中文船名 LIKE @EN" Dim cmdSelect As New SqlDataAdapter(SQLselect, cnConn) cmdSelect.SelectCommand.Parameters.Add(New SqlParameter("@EN", SqlDbType.NVarChar, 11)) cmdSelect.SelectCommand.Parameters("@EN").Value = EN.Value.ToUpper + "%" ds = New DataSet cmdSelect.Fill(ds, "ShipInfo") dgList.DataSource = ds.Tables("ShipInfo").DefaultView dgList.DataBind() End Sub Sub cmdDCancel(ByVal Sender As Object, ByVal E As DataGridCommandEventArgs) dgList.EditItemIndex() = -1 BindGrid() End Sub Sub cmdDEdit(ByVal Sender As Object, ByVal E As DataGridCommandEventArgs) Handles dgList.EditCommand dgList.EditItemIndex() = CInt(E.Item.ItemIndex) BindGrid() End Sub Sub cmdDUpdate(ByVal Sender As Object, ByVal E As DataGridCommandEventArgs) Dim cnConn As SqlConnection cnConn = New SqlConnection(ConfigurationSettings.AppSettings("MM_CONNECTION_STRING_zLink")) Dim DS As DataSet Dim cmdCommand As SqlCommand Dim SQLupdate As String = "UPDATE ShipInfo SET 编号 = @Id, 中文船名 = @CName, " & _ "英文船名 = @EName, 船东 = @Owner, 船代 = @Agent where 编号 = @Id" cmdCommand = New SqlCommand(SQLupdate, cnConn) cmdCommand.Parameters.Add(New SqlParameter("@Id", SqlDbType.NVarChar, 11)) cmdCommand.Parameters.Add(New SqlParameter("@CName", SqlDbType.NVarChar, 40)) cmdCommand.Parameters.Add(New SqlParameter("@EName", SqlDbType.NVarChar, 20)) cmdCommand.Parameters.Add(New SqlParameter("@Owner", SqlDbType.NChar, 12)) cmdCommand.Parameters.Add(New SqlParameter("@Agent", SqlDbType.NVarChar, 40)) cmdCommand.Parameters("@Id").Value = dgList.DataKeys(CInt(E.Item.ItemIndex)) 'Dim Cols As String() = {"@Id", "@CName", "@EName", "@Owner", "@Agent"} 'Dim NumCols As Integer = E.Item.Cells.Count 'Message.InnerHtml = "" 'Dim I As Integer 'For I = 2 To NumCols - 2 'skip first, second and last column 'Dim CurrentTextBox As System.Web.UI.WebControls.TextBox 'CurrentTextBox = E.Item.Cells(I).Controls(0) 'Dim ColValue As String = CurrentTextBox.Text ' cmdCommand.Parameters(Cols(I - 1)).Value = ColValue 'Next
cmdCommand.Connection.Open() Try cmdCommand.ExecuteNonQuery() Message.InnerHtml = "<b>Record Updated</b><br>" & SQLupdate.ToString() dgList.EditItemIndex = -1 Catch Exp As SqlException If Exp.Number = 2627 Then Message.InnerHtml = "ERROR: A record already exists with the same " & _ "primary key" Else Message.InnerHtml = "ERROR: Could not update record, please " & _ "ensure the fields are correctly filled out" End If Message.Style("color") = "red" End Try cmdCommand.Connection.Close() BindGrid() End Sub Private Sub BindGrid() Dim cnConn As SqlConnection cnConn = New SqlConnection(ConfigurationSettings.AppSettings("MM_CONNECTION_STRING_zLink")) Dim dsEdit As DataSet Dim SQLedit As String = "select 编号,英文船名,中文船名,船东,船代 from ShipInfo" Dim cmdCommand As SqlDataAdapter cmdCommand = New SqlDataAdapter(SQLedit, cnConn) dsEdit = New DataSet cmdCommand.Fill(dsEdit, "ShipInfo") dgList.DataSource = dsEdit.Tables("ShipInfo").DefaultView dgList.DataBind() End SubEnd Class
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="test.aspx.vb" Inherits="MyCorpWeb.test" codePage="936"%>删掉试试!-----------努力学习 不断实践 虚心讨教---------
第三种情况应该是你的原因
test.aspx.vb:
Imports System.Data
Imports System.Data.SqlClient
Imports System.Globalization
Imports AccessibilityPublic Class EditSelectShip
Inherits System.Web.UI.Page#Region " Web 窗体设计器生成的代码 "
...
#End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
Page.RegisterStartupScript("focus", "<script>document.all.EN.focus()</script>")
If Not (IsPostBack) Then
BindGrid()
End If
End Sub Private Sub Submit_Click(ByVal Sender As Object, ByVal E As EventArgs) Handles Sumbit.Click
Dim cnConn As SqlConnection
cnConn = New SqlConnection(ConfigurationSettings.AppSettings("zLink")) Dim ds As DataSet Dim SQLselect As String = "SELECT 编号,英文船名,中文船名,船东,船代 FROM ShipInfo WHERE 英文船名 LIKE @EN OR 中文船名 LIKE @EN" Dim cmdSelect As New SqlDataAdapter(SQLselect, cnConn) cmdSelect.SelectCommand.Parameters.Add(New SqlParameter("@EN", SqlDbType.NVarChar, 11))
cmdSelect.SelectCommand.Parameters("@EN").Value = EN.Value.ToUpper + "%" ds = New DataSet
cmdSelect.Fill(ds, "ShipInfo") dgList.DataSource = ds.Tables("ShipInfo").DefaultView
dgList.DataBind()
End Sub Sub cmdDCancel(ByVal Sender As Object, ByVal E As DataGridCommandEventArgs)
dgList.EditItemIndex() = -1
BindGrid()
End Sub Sub cmdDEdit(ByVal Sender As Object, ByVal E As DataGridCommandEventArgs) Handles dgList.EditCommand dgList.EditItemIndex() = CInt(E.Item.ItemIndex)
BindGrid()
End Sub Sub cmdDUpdate(ByVal Sender As Object, ByVal E As DataGridCommandEventArgs)
Dim cnConn As SqlConnection
cnConn = New SqlConnection(ConfigurationSettings.AppSettings("MM_CONNECTION_STRING_zLink")) Dim DS As DataSet
Dim cmdCommand As SqlCommand Dim SQLupdate As String = "UPDATE ShipInfo SET 编号 = @Id, 中文船名 = @CName, " & _
"英文船名 = @EName, 船东 = @Owner, 船代 = @Agent where 编号 = @Id" cmdCommand = New SqlCommand(SQLupdate, cnConn) cmdCommand.Parameters.Add(New SqlParameter("@Id", SqlDbType.NVarChar, 11))
cmdCommand.Parameters.Add(New SqlParameter("@CName", SqlDbType.NVarChar, 40))
cmdCommand.Parameters.Add(New SqlParameter("@EName", SqlDbType.NVarChar, 20))
cmdCommand.Parameters.Add(New SqlParameter("@Owner", SqlDbType.NChar, 12))
cmdCommand.Parameters.Add(New SqlParameter("@Agent", SqlDbType.NVarChar, 40)) cmdCommand.Parameters("@Id").Value = dgList.DataKeys(CInt(E.Item.ItemIndex)) 'Dim Cols As String() = {"@Id", "@CName", "@EName", "@Owner", "@Agent"}
'Dim NumCols As Integer = E.Item.Cells.Count
'Message.InnerHtml = ""
'Dim I As Integer
'For I = 2 To NumCols - 2 'skip first, second and last column
'Dim CurrentTextBox As System.Web.UI.WebControls.TextBox
'CurrentTextBox = E.Item.Cells(I).Controls(0)
'Dim ColValue As String = CurrentTextBox.Text
' cmdCommand.Parameters(Cols(I - 1)).Value = ColValue
'Next
cmdCommand.Connection.Open() Try
cmdCommand.ExecuteNonQuery()
Message.InnerHtml = "<b>Record Updated</b><br>" & SQLupdate.ToString()
dgList.EditItemIndex = -1
Catch Exp As SqlException
If Exp.Number = 2627 Then
Message.InnerHtml = "ERROR: A record already exists with the same " & _
"primary key"
Else
Message.InnerHtml = "ERROR: Could not update record, please " & _
"ensure the fields are correctly filled out"
End If
Message.Style("color") = "red"
End Try cmdCommand.Connection.Close() BindGrid()
End Sub Private Sub BindGrid()
Dim cnConn As SqlConnection
cnConn = New SqlConnection(ConfigurationSettings.AppSettings("MM_CONNECTION_STRING_zLink")) Dim dsEdit As DataSet
Dim SQLedit As String = "select 编号,英文船名,中文船名,船东,船代 from ShipInfo"
Dim cmdCommand As SqlDataAdapter
cmdCommand = New SqlDataAdapter(SQLedit, cnConn) dsEdit = New DataSet
cmdCommand.Fill(dsEdit, "ShipInfo") dgList.DataSource = dsEdit.Tables("ShipInfo").DefaultView
dgList.DataBind()
End SubEnd Class