0

我的目标是创建一个具有编辑、删除和插入功能的 GridView 列表(每个都映射到一个表)。(插入功能可以通过页脚中的模板字段来完成。)

我有一个嵌套在转发器中的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
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 回答