【发布时间】:2015-11-25 15:53:08
【问题描述】:
我有一个 1 列网格。在用户交互过程中,会动态构建和添加更多列。无论从网格中添加或删除多少列,初始打印按钮列都应始终保留。这是网格。
<dx:ASPxGridView ID="gvAdvancedResults"
ClientInstanceName="gvAdvancedResults" runat="server" EnableRowsCache="False" KeyFieldName="ID" AutoGenerateColumns="True">
<Columns>
<dx:GridViewDataColumn Width="3%" VisibleIndex="0" Caption="Print">
<DataItemTemplate>
<dx:ASPxButton ID="btnDisplayMEC" runat="server" OnClick="btnDisplayMEC_OnClick" ClientInstanceName="btnDisplayMEC" CommandArgument='<%# Eval("ID") %>'
CssClass="reportbutt" BackColor="Transparent" Border-BorderStyle="None" Width="16" Height="16">
<Image Url="~/Assets/Images/printer.png" Width="16" Height="16"></Image>
</dx:ASPxButton>
</DataItemTemplate>
</dx:GridViewDataColumn>
</Columns>
</dx:ASPxGridView>
单击按钮时,我使用以下命令清除并重新填充数据表 dt 中的网格列
'Remove all columns except the first (index 0)
For gix As Integer = gvAdvancedResults.Columns.Count - 1 To 1 Step -1
If gix <> 0 Then gvAdvancedResults.Columns.RemoveAt(gix)
Next
'Add new columns to the gridview
For Each col As DataColumn In dt.Columns
Dim xcol As Object = gvAdvancedResults.Columns(col.ColumnName)
If xcol IsNot Nothing Then Continue For
Dim newcol As New GridViewDataColumn(col.ColumnName, col.ColumnName)
gvAdvancedResults.Columns.Add(newcol)
Next
gvAdvancedResults.DataSource = dt
gvAdvancedResults.DataBind()
现在问题来了。 “打印”列在列删除过程中仍然存在(应该如此),但列的 DataItemTemplate 中的 ASPxButton 消失了。添加了所有应该添加的列。
为什么我丢失了打印按钮但保留了它的列?
【问题讨论】:
-
在将列添加到网格视图之前将按钮添加到列中?
-
这个按钮已经被创建了。并且其列在列删除过程中被跳过。如果列没有被删除(也没有被触摸),为什么按钮没有出现?
-
奇怪的结果,我承认,重新绑定源时可能会出错,如果你不做任何 datasource= 和 databind() 会发生什么?
-
新数据不会显示。
标签: asp.net gridview devexpress aspxgridview