我的目标是创建一个具有编辑、删除和插入功能的 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