GridView動態生成控件,取值問題?
uoche 2007-08-08 04:33:26 現在有一問題,GridView需要動態綁定表,對表中的相應欄位內容動態生成控件(如:Dropdownlist),並從中取得控件中的值,下面代碼不能實現,大家有什麼好的方法了?
Sub BindGrid()
Dim dt As DataTable
dt = Mydb.GetDataTable("select top 20 * from PL_Missingdata")
Me.GridView1.DataSource = dt
Me.GridView1.DataBind()
End Sub
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
If (e.Row.RowType = DataControlRowType.DataRow) Then
Dim dt, Dorp As DataTable
Dim i As Integer
dt = Mydb.GetDataTable("Exec Mp_GetColumnName @TableName='PL_Missingdata'") '取得表的列名
For i = 2 To dt.Rows.Count - 3 '循環列
Select Case dt.Rows(i).Item(0)
Case "OrgCode"
If e.Row.Cells(i + 1).Text.Trim = " " Then '根據當前單元格內容是空時生成一個DropDownList
Dim ddl As DropDownList = New DropDownList()
ddl.ID = "DropDownList1"
Dorp = Mydb.GetDataTable("[MD_GetOrgList]")
Dim row As DataRow = Dorp.NewRow
Dorp.Rows.InsertAt(row, 0)
ddl.DataSource = Dorp
ddl.DataValueField = "OrgCode"
ddl.DataBind()
e.Row.Cells(i + 1).Controls.Add(ddl)
Dorp.Dispose()
End If
Case "CorpCode"
If e.Row.Cells(i + 1).Text.Trim = " " Then '根據當前單元格內容是空時生成一個DropDownList
Dim ddl2 As DropDownList = New DropDownList()
ddl2.ID = "ddl2" '
Dorp = Mydb.GetDataTable("MD_Corp_SP @flag=2")
Dim row As DataRow = Dorp.NewRow
Dorp.Rows.InsertAt(row, 0)
ddl2.DataSource = Dorp
ddl2.DataValueField = "CorpCode"
ddl2.DataBind()
e.Row.Cells(i + 1).Controls.Add(ddl2)
End If
End Select
Next
End If
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim gvInfo As GridViewRow
For Each gvInfo In Me.GridView1.Rows
If CType(gvInfo.Cells(0).FindControl("CheckBox1"), CheckBox).Checked = True Then
Response.Write(CType(gvInfo.FindControl("CheckBox1"), CheckBox).Checked) '問題從這裡是取不到動態生成DropDownList的值,固定的控件值又可以取得
End If
Next
Call BindGrid()
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
Call BindGrid()
End If
End Sub