动态添加DataGrid的模板列(DropDownList)
http://expert.csdn.net/Expert/topic/1319/1319041.xml

解决方案 »

  1.   

    Bind my datagrid:dgrdUList
    try it!
    hope some helpful for you coding!
    ---------------------------------
           Sub Bind()
                Dim UProf As New DAL.RoutingProfile()
                Dim Bindds As New DataSet()
                Bindds = UProf.GetUList(Me.UserID, Me.RoutingProfileID, Me.curLanguage, Me.RoutingStepID)
                UProf.GetToRoleName(Bindds, Me.RoutingStepID, Me.curLanguage)
                Me.lblTo.Text = ""
                Me.lblTo.Text = "To:" & Bindds.Tables("ToRoleName").Rows(0)("ToRoleName") & "."
                Me.dgrdUList.Columns.Clear()
                Me.grdUserList.Columns.Clear()            Dim DeleteColumn As New ButtonColumn()
                With DeleteColumn
                    .Text = "<img src='../images/delete.gif' border='0' title='Delete' >"
                    .ItemStyle.Width = Unit.Pixel(30)
                    .CommandName = "Delete"
                End With            Dim dc(4) As BoundColumn
                For i = 0 To 4
                    dc(i) = New BoundColumn()
                Next            dc(0).DataField = "RoutingSeq"
                dc(0).ItemStyle.Width = Unit.Pixel(20)            dc(1).DataField = "ToUserID"
                dc(1).ItemStyle.Width = Unit.Pixel(140)            dc(2).DataField = "RoutingActionID"
                dc(2).Visible = False            dc(3).DataField = "RoutingAction"
                dc(3).ItemStyle.Width = Unit.Pixel(140)
                dc(4).DataField = "IsMandatory"
                dc(4).ItemStyle.Width = Unit.Pixel(70)
                dc(4).ItemStyle.HorizontalAlign = HorizontalAlign.Center            For i = 0 To 4
                    Me.dgrdUList.Columns.Add(dc(i))
                Next
                Me.dgrdUList.Columns.Add(DeleteColumn)
                Me.dgrdUList.DataSource = Bindds.Tables(0).DefaultView
                Me.dgrdUList.DataBind()
    End
            Private Sub dgrdUList_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgrdUList.ItemDataBound
                Dim ddl As New System.Web.UI.WebControls.DropDownList()
                Dim ddl2 As New System.Web.UI.WebControls.DropDownList()
                Dim chkMandatory As New CheckBox()            Dim dsA As New RoutingProfileData()
                Dim ds2 As New DataSet()
                Dim UProf As New DAL.RoutingProfile()            dsA = UProf.GetActionList(Me.curLanguage, Me.RoutingStepID, True)
                ddl.DataSource = dsA.Tables(dsA.RoutingAction_Table).DefaultView
                ddl.DataValueField = dsA.RoutingActionID_FIELD
                ddl.DataTextField = dsA.RoutingAction_FIELD
                ddl.DataBind()
                ddl.Width = Unit.Pixel(135)
                ddl.CssClass = "text"            For i = 0 To ddl.Items.Count - 1         'Action ID
                    If ddl.Items(i).Value = e.Item.Cells(2).Text Then
                        ddl.SelectedIndex = i
                    End If
                Next            ds2 = UProf.GetToUserList(Me.UserID, Me.RoutingProfileID, Me.RoutingStepID)
                ddl2.DataSource = ds2.Tables("ToUserList").DefaultView
                ddl2.DataValueField = "UserID"
                ddl2.DataTextField = "UserID"
                ddl2.DataBind()
                ddl2.Width = Unit.Pixel(135)
                ddl2.CssClass = "text"            If e.Item.Cells(1).Text = "" Or e.Item.Cells(1).Text = "&nbsp;" Then
                    ddl2.Items.Insert(0, "")
                Else
                    ddl2.Items.Insert(0, e.Item.Cells(1).Text)
                End If            For i = 0 To ddl2.Items.Count - 1           'To UserID
                    If ddl2.Items(i).Value = e.Item.Cells(1).Text Then
                        ddl2.SelectedIndex = i
                    End If
                Next            If e.Item.Cells(4).Text = "True" Then
                    chkMandatory.Checked = True
                End If
                If e.Item.ItemIndex >= 0 Then
                    e.Item.Cells(1).Controls.Add(ddl2)
                    e.Item.Cells(3).Controls.Add(ddl)
                    e.Item.Cells(4).Controls.Add(chkMandatory)
                    e.Item.Cells(0).Text = e.Item.ItemIndex + 1         'Is Selection!
                End If            Me.lblLast.Text = Me.dgrdUList.Items.Count + 1            dsA.Dispose()
                dsA = Nothing
                ds2.Dispose()
                ds2 = Nothing
                UProf.Dispose()
                UProf = Nothing
            End Sub
      

  2.   

    看www.dotnetbips.com中关于"Dynamic DataGrid"的两篇文章。讲得比较深入。
      

  3.   

    Public Class GenericItem
            Inherits System.Web.UI.Page
            Implements ITemplate
            Private strColumn As String
            '构造函数,传入一个字段名作为显示的数据
            Public Sub New(ByVal column As String)
                strColumn = column
            End Sub        '重载ITemplate接口的InstantiateIn方法
            Public Sub InstantiateIn(ByVal container As Control) Implements ITemplate.InstantiateIn
                Select Case LCase(strColumn)
                    Case "dropdownlist"
                        Dim ddl As New DropDownList()
                        ddl.ID = "ddl"
                        container.Controls.Add(ddl)
                    Case "textbox"
                        Dim txt As New TextBox()
                        AddHandler txt.DataBinding, AddressOf BindData
                        container.Controls.Add(txt)                Case "checkbox"
                        Dim chk As New CheckBox()
                        chk.ID = "chk"
                        container.Controls.Add(chk)
                    Case "button"
                        Dim btClick As New Button()
                        Dim txtReturn As New TextBox()
                        txtReturn.ID = "txtReturn"
                        container.Controls.Add(txtReturn)
                        btClick.ID = "btClick"
                        btClick.CommandName = "AAA"
                        btClick.Text = "OnClick"
                        container.Controls.Add(btClick)
                End Select
            End Sub
     看了大家的贴子和icyer的例子
    http://www20.brinkster.com/icyer/ItemTemplate/ItemTemplate_vb.htm
    问题解决了!
    接分
      

  4.   

    Response.Write("<script language=JavaScript>window.showModalDialog('temp2.aspx', '', 'dialogHeight:300px; dialogLeft:200px;');</script>")为什么在弹出的对话框中重新刷新或单击一个按纽时就会出现一个这的窗口temp2.aspx,请问要怎样设置才使不用弹出一个窗口呢?
      

  5.   

    在showmodaldialog打开的页面中
    在<head></head>之间加入:<base target="_self">