2010-07-27 2 views
0

У меня проблема с dtaview. Я динамически создаю новые datacolumns, присваивая им значения и добавляя их в свой datatable. Перед использованием фильтра это было хорошо при привязке. Появились все значения.проблема привязки к фильтруемому dataview

Однако с тех пор я решил уменьшить возвращаемые результаты путем фильтрации (по буквам), и мой возвращенный dataview, похоже, не позволяет связывать с вновь созданными столбцами данных. Я ввел в отфильтрованное представление и вижу, что значения присутствуют, что мне нужно.

Я пытаюсь не возвращать все обратно в стол после применения фильтра. Запрос на 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> 

Все, не являющихся динамическими datacolumns прекрасны. Отображаются значения как в виде данных, так и в отфильтрованном виде.

Любая помощь будет очень признательна !!!

ответ

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()

Все значения теперь приходят через.

Смежные вопросы