0

私の目標は、基本的に、編集、削除、および挿入機能を備えた 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
4

1 に答える 1

0

要件を知らなければ、何とも言えません。

ただし、ListView、GridView、DataList、および Repeater を比較するグリッドがここにあります。

http://weblogs.asp.net/anasghanem/archive/2008/09/06/comparing-listview-with-gridview-datalist-and-repeater.aspx

于 2012-08-07T13:37:27.227 に答える