0
我有一個DetailsView
其中有一些靜態字段在我的標記中定義,並在VB代碼隱藏中動態添加一些額外的字段。應該指出DetailsView
住在UpdatePanel
。更新混合DetailsView(具有靜態和動態字段)
假設我想獲得多個倉庫的庫存信息,但我只想看看那些庫存在手。此外,我有一些靜態信息,如產品,SKU等
我遇到的問題是,每次我點擊「詳細信息」按鈕,它會繼續追加動態字段到最後,渲染表格。我想我要麼需要一個條件,要麼告訴它以某種方式重新渲染。我懷疑這個問題是由於我使用了UpdatePanel
而引起的,但對於我的客戶的用戶體驗來說保持這一點很重要。
'Warehouse Stock by Location
Dim stockDT As New DataTable
For Each row As DataRow In stockDT.Rows 'Add column for each Warehouse that has stock
'Adds the fields to the DetailsView dynamically for Warehouses with stock.
Dim col As New DataColumn(WarehouseLocID + row(WarehouseLocID).ToString)
Dim bf As New BoundField
bf.HeaderText = "Warehouse " + row(WarehouseLocID)
bf.DataField = col.ColumnName
'NEED HELP HERE! HOW TO UPDATE OR RE-CREATE THE DETAILSVIEW TO REFLECT NEW INFO?
If Not SAPDetailsView.HasControls Then 'BROKEN
SAPDetailsView.Fields.Add(bf)
Else
SAPDetailsView.Fields.Item(0).HeaderText = bf.DataField 'UPDATES THE WRONG "ITEM" FIELD VALUE!!
End If
Next
這是非常基本的標記。
<asp:UpdatePanel ID="statusUpdatePanel" runat="server">
<ContentTemplate>
<asp:GridView ID="ProductsTable" DataSourceID="ProductsSDS">
<Columns>
<asp:ButtonField ButtonType="Button" Text="Details" CommandName="Select" />
</Columns>
</asp:GridView>
<asp:DetailsView ID="WarehouseStock" runat="server" AutoGenerateRows="False">
<Fields>
<asp:BoundField HeaderText="Product" DataField="Product" />
<asp:BoundField HeaderText="Unit Price" DataField="UnitPrice" />
<asp:BoundField HeaderText="SKU" DataField="SKU" />
</Fields>
</asp:DetailsView>
<!-- The Dynamic Fields are appended in the codebehind -->
</ContentTemplate>
</asp:UpdatePanel>