私の目標は、基本的に、編集、削除、および挿入機能を備えた GridViews (それぞれがテーブルにマップされる) のリストを作成することです。(挿入機能は、フッターのテンプレート フィールドで実行できます。)
リピーター内にネストされたグリッドビューがあり、それぞれが動的に作成されます。バインドされたフィールドでグリッドビューを正常に設定しました (ただし、ドロップダウンリストを取得して挿入するには、最終的にこれをテンプレート フィールドに変更する必要があります)。しかし、編集/削除/挿入について考えている今、より良い方法があるかどうか疑問に思っています。
私がやろうとしていることを行うための最良の方法は何ですか? 必要以上に難しくしているように感じます.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