我的目標是基本上創建一個GridViews列表(每個映射到一個表格),具有編輯,刪除和插入功能。 (插入功能可以使用頁腳中的模板字段完成。)使用動態創建的控件編輯/插入/刪除
我有一個嵌套在中繼器中的gridview,每個都是動態創建的。我已經用綁定字段成功填充了gridview(儘管我需要最終將其更改爲模板字段以獲取下拉列表和插入)。然而,現在我正在考慮編輯/刪除/插入,我想知道是否有更好的方法。
什麼是最好的方式來做我想做的事情?我覺得我正在讓它變得比應該更難,而GridView可能不是最好的控制。我應該只使用嵌套中繼器嗎?在中繼器內使用ListView?
如果您認爲有更好的方法來做到這一點,請提供建議/示例。謝謝!
當前代碼:
<asp:Repeater ID="FormRepeater" DataSourceID="sdsRepeater" runat="server">
<ItemTemplate>
<asp:HiddenField ID="FormID" Value='<%# Bind("FormID") %>' runat="server" />
<asp:HiddenField ID="tablename" Value='<%# Bind("TableName") %>' runat="server" />
<div class="gvHeader2">
<div class="gvHeader">
<asp:Label ID="lblFormName" runat="server" Text='<%# Bind("FormName") %>'></asp:Label>
</div>
<div class="EditFormImage">
</div>
<div class="CreateFormLink">
<asp:HyperLink ID="lnkCreateForm" runat="server">
Create New
</asp:HyperLink>
</div>
</div>
<div class="gv">
<asp:GridView ID="gvForms" runat="server" DataSourceID="sdsGVForms"
DataKeyNames="FormDataID"
AutoGenerateColumns="false"
AutoGenerateEditButton="true"
OnRowEditing="GV_RowEditing"
OnRowCommand="GV_RowCommand"
>
<Columns>
</Columns>
</asp:GridView>
</div>
</ItemTemplate>
</asp:Repeater>
Private Sub FormRepeater_ItemDataBound(sender As Object, e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles FormRepeater.ItemDataBound
Dim TableName As String = CType(e.Item.FindControl("tablename"), HiddenField).Value
Dim FormID As Integer = CType(e.Item.FindControl("FormID"), HiddenField).Value
Dim ProductID As Integer = Page.RouteData.Values("ProductID")
Dim sdsForms As SqlDataSource = CType(e.Item.FindControl("sdsGVForms"), SqlDataSource)
Dim gvForms As WebControls.GridView = CType(e.Item.FindControl("gvForms"), GridView)
Dim dt As DataTable = F.GetFormFieldsToDisplayInList(FormID)
For Each r As DataRow In dt.Rows
Dim bfield As BoundField = New BoundField
bfield.DataField = r(0)
bfield.HeaderText = r(1)
gvForms.Columns.Add(bfield)
FieldList.Add(r(0))
Next
sdsForms.SelectCommand = "SQL Query..."
gvForms.DataBind()
End Sub
我決定去簡單起見另一條路線現在,但我認爲你是對的。如果我再次解決這個問題,我應該使用ListView而不是GridView。謝謝! – scojomodena 2012-08-08 02:40:04