既然采用codebehind为何在aspx页面里面写载入代码放到test.aspx.vb里面的 page_load()里

解决方案 »

  1.   

    你没有定义数据列,而且你的datagrid自动产生列设置AutoGenelrateColumn为false了
      

  2.   

    同意天下无双的意见,这个page_load根本就没有执行,放到vb里的page_load里就好了
      

  3.   

    把这句
    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="test.aspx.vb" Inherits="MyCorpWeb.test" codePage="936"%>删掉试试!-----------努力学习 不断实践 虚心讨教---------
      

  4.   

    dglist.databind();这个错误都没有报出来吧 应该是这段代码没有执行吧 你还是设断点跟一下程序吧 原因有三点:一:没有数据二:datagrid没有绑定 三:没有执行你的那部分程序;
    第三种情况应该是你的原因
      

  5.   

    谢谢各位!按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