*******目的:
我想实现,一个页面 4个button,然后点同的 button,显示不同的datagrid,然后grid中 有新增,删除,修改!*******代码:
  Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '在此处放置初始化页的用户代码
        If Page.IsPostBack Then
            DataGrid.DataSource = CreateDataSoure()
            DataGrid.DataBind()        End If
    End Sub
    Private Sub btnWX_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWX.Click
        '加载    End Sub    Private Sub btnUSEr_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUSEr.Click
        DataGrid.AutoGenerateColumns = False        Dim t1 As New TemplateColumn
        t1.ItemTemplate = New DataGridColumn.DG_WX_Column_uID
        t1.HeaderText = "编号"
        DataGrid.Columns.Add(t1)        Dim t11 As New TemplateColumn
        t11.ItemTemplate = New DataGridColumn.DG_WX_Column_uName
        t11.HeaderText = "名称"
        DataGrid.Columns.Add(t11)        Dim t2 As New ButtonColumn
        t2.ButtonType = ButtonColumnType.LinkButton
        t2.CommandName = "Del"
        t2.Text = "删 除"
        t2.HeaderText = "删 除"
        DataGrid.Columns.Add(t2)        Dim t3 As New ButtonColumn
        t3.ButtonType = ButtonColumnType.LinkButton
        t3.CommandName = "New"
        t3.Text = "新 增"
        t3.HeaderText = "新 增"
        DataGrid.Columns.Add(t3)        Dim t4 As New ButtonColumn
        t4.ButtonType = ButtonColumnType.LinkButton
        t4.CommandName = "Edit"
        t4.Text = "修 改"
        t4.HeaderText = "修 改"
        DataGrid.Columns.Add(t4)        DataGrid.DataSource = CreateDataSoure()
        DataGrid.DataBind()
    End Sub    Private Function CreateDataSoure() As DataView
        Dim ds As DataSet = SqlHelper.ExecuteDataset(Application("ConnectString"), CommandType.Text, "select uID as 编号,uName as 名称 from tuser")
        Return ds.Tables(0).DefaultView
    End Function--------------------这里加上中段,但是根据就不触发!
    Public Sub DataGrid_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid.ItemCommand
        Select Case (CType(e.CommandSource, ButtonColumn)).CommandName
            Case "Del"
            Case "Edit"
            Case "New"
            Case Else
        End Select    End Sub
Namespace DataGridColumn    Public Class DG_WX_Column_uID
        Implements ITemplate        Public Sub InstantiateIn(ByVal container As System.Web.UI.Control) Implements System.Web.UI.ITemplate.InstantiateIn
            Dim l As New LiteralControl
            AddHandler l.DataBinding, AddressOf Me.OnDataBinding
            container.Controls.Add(l)
        End Sub        Public Sub OnDataBinding(ByVal sender As Object, ByVal e As EventArgs)
            Dim l As LiteralControl = CType(sender, LiteralControl) 'LiteralControl发送绑定请求 
            Dim container As DataGridItem = CType(l.NamingContainer, DataGridItem)
            l.Text = CType(container.DataItem, DataRowView).Item("编号").ToString() '绑定stuname字段 
        End Sub 'OnDataBinding    End Class    Public Class DG_WX_Column_uName
        Implements ITemplate        Public Sub InstantiateIn(ByVal container As System.Web.UI.Control) Implements System.Web.UI.ITemplate.InstantiateIn
            Dim l As New LiteralControl
            AddHandler l.DataBinding, AddressOf Me.OnDataBinding
            container.Controls.Add(l)
        End Sub        Public Sub OnDataBinding(ByVal sender As Object, ByVal e As EventArgs)
            Dim l As LiteralControl = CType(sender, LiteralControl) 'LiteralControl发送绑定请求 
            Dim container As DataGridItem = CType(l.NamingContainer, DataGridItem)
            l.Text = CType(container.DataItem, DataRowView).Item("名称").ToString() '绑定stuname字段 
        End Sub 'OnDataBinding
    End ClassEnd Namespace*******问题:
1、如何触发 该事件,哪错了,代码基本上根据 网上的C#翻译的.
2、点 新增后 出一窗口,以便输入数据,保存。如何弹出新窗口?
3、到新窗口的事后,肯定要传递参数,如何获取参数,传递参数?谢谢!

解决方案 »

  1.   

    我只看了Page_Load的几行代码,扫了一下后边有什么绑定数据代码,可惜没有看到。最基本的,你不能够使用“If Page.IsPostBack Then”来判断,否则DataGrid以及Item都没有了,那么如何触发ItemCommand(这个事件是由item触发事件然后“冒泡”给DataGrid的),对象都根本不存在,对象上的事件如何触发?我不知道你从哪里翻译来的代码,你肯定理解错了。如果人家的例子确实是要触发item所触发的事件,那么就要先创建这个对象,而不会放在if(!IsPostback)中。除非它并不需要这个对象及其事件才可以放在if判断中。
      

  2.   

    否则DataGrid以及Item都没有了  -->  否则DataGrid中Item都没有了没有重建所有的item,那么它所决定的事件、需要获取的值都不可能得到。
      

  3.   

    to libinguest(上善若水)事件 没有丢!