2012-08-07 110 views
0

我的目標是基本上創建一個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 

回答

相關問題