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 = " " 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
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 问题解决了! 接分
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 = " " 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
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
问题解决了!
接分
在<head></head>之间加入:<base target="_self">