问题绑定到过滤的数据视图

时间:2010-07-27 08:44:38

标签: asp.net

我遇到了dtaview的问题。我正在动态创建新的数据列,为它们分配值,并将它们添加到我的数据表中。在使用过滤器之前,绑定时这很好。所有值都出现了。

但是,我已经选择通过过滤(通过字母)来减少返回的结果,并且我返回的数据视图似乎不允许与新创建的数据列绑定。我已经挖掘了过滤后的视图,并且可以看到我需要的值存在。

我正在尝试避免在应用过滤器后将所有内容重新放回表中。基于字母的SQL查询是不可能的,因为整个原始表处于视图状态。

以下是一些代码段:

        --Firstly create new datacolumn

        Dim ICount As System.Data.DataColumn = New System.Data.DataColumn
        ICount.DataType = System.Type.GetType("System.String")
        ICount.AllowDBNull = True
        ICount.ColumnName = "ICount"
        register.Columns.Add(ICount)

        --integer value is first calculated and then put into the datatable row

        row("ICount") = IntegerCount.ToString()

        --filtered view is created from datatable (returned from viewstate)

        Dim filteredView As New Data.DataView(pTable, FilterExpression, "Surname", Data.DataViewRowState.OriginalRows)

         --view is bound

         grd.DataSource = filteredView
         grd.DataBind()

         --Markup

         <asp:TemplateField HeaderText ="ICount" SortExpression="ICount">
                        <ItemTemplate>
                            <asp:Label ID="IC" runat="server"                     Text='<%# Bind("ICount") %>'></asp:Label>
                        </ItemTemplate>
                </asp:TemplateField>

所有非动态数据列都很好。挖掘到数据表和过滤后的视图显示值都存在。

任何帮助都将非常感谢!!!

1 个答案:

答案 0 :(得分:0)

好的 - 解决了这个问题。

问题在于我没有使用数据集。

因此,我应该完成以下工作,而不是创建新视图:

datTable = CType(ViewState(“datTable”),System.Data.DataTable)

datSet.Tables.Add(datTable)

datView = datSet.Tables(0).DefaultView

datView.RowFilter = FilterExpression

grd.DataSource = datView

grd.DataBind()

所有价值观现在都已经过去了。

相关问题