我有一箇中繼器,我已經綁定到過濾列名稱,因爲它們已應用(當前使用會話,我可能會更改此循環以遍歷列尋找現在過濾器,我真的知道如何網格工作)。以編程方式從RadGrid中刪除標題上下文菜單過濾器
我在每個過濾列名旁邊都有一個按鈕,用於從RadGrid中刪除過濾器。
<asp:Repeater ID="repCorpFilters" runat="server" OnItemCommand="repFilters_ItemCommand">
<HeaderTemplate>
Current Filters:
</HeaderTemplate>
<ItemTemplate>
<asp:ImageButton runat="server" CommandName="removefilter" CommandArgument="corp" ImageUrl="../images/Delete.gif" />
<asp:literal ID="litFilter" runat="server" Text='<%#Container.DataItem() %>' />
</ItemTemplate>
<SeparatorTemplate>
,
</SeparatorTemplate>
</asp:Repeater>
Protected Sub repFilters_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs)
Select Case e.CommandName
Case "removefilter"
BindGrid(DirectCast([Enum].Parse(GetType(products), e.CommandArgument), products), Nothing, _
CType(e.Item.FindControl("litFilter"), Literal).Text)
End Select
End Sub
Private Sub BindGrid(ByVal prod As products, Optional ByVal cusipFilter As String = Nothing, Optional ByVal strRemoveFilter As String = Nothing)
Dim dvCorp As DataView = CachedPartialCorp()
If Not IsNothing(cusipFilter) Then
isCusipFiltered = True
dvCorp.RowFilter = "CUSIP IN " & cusipFilter
End If
If Not IsNothing(strRemoveFilter) Then
Dim filters As List(Of String) = RemoveFilter("partialCorpFilters", strRemoveFilter)
If filters.Count = 0 Then
repCorpFilters.Visible = False
Else
repCorpFilters.DataSource = filters
repCorpFilters.DataBind()
End If
For Each gc As GridColumn In dtgCorp.MasterTableView.Columns
With gc
If .IsBoundToFieldName(strRemoveFilter) Then
.CurrentFilterFunction = GridKnownFunction.NoFilter
.CurrentFilterValue = ""
.AndCurrentFilterFunction = GridKnownFunction.NoFilter
.AndCurrentFilterValue = ""
End If
End With
Next
End If
dtgCorp.DataSource = dvCorp
dtgCorp.DataBind()
End Sub
一切工作正常,除從RadGrid實際刪除過濾器。在我通過列循環並找到正在嘗試刪除的過濾器的列時,我重置了過濾器下拉列表和值,這很好用!我可以右鍵單擊標題項目,並且過濾器顯示不被過濾。但數據保持過濾!我如何讓RadGrid根據選定的過濾器重新評估其新的過濾值?
代碼我感到的多汁位是在這裏:
For Each gc As GridColumn In dtgCorp.MasterTableView.Columns
With gc
If .IsBoundToFieldName(strRemoveFilter) Then
.CurrentFilterFunction = GridKnownFunction.NoFilter
.CurrentFilterValue = ""
.AndCurrentFilterFunction = GridKnownFunction.NoFilter
.AndCurrentFilterValue = ""
End If
End With
Next
End If
dtgCorp.DataSource = dvCorp
dtgCorp.DataBind()
,並不得要領:精確相同的結果。至於演示,他們用「RadGrid1.MasterTableView.FilterExpression = String.Empty」清除整個TableView的filterexpression。如果你完全清除過濾器,這很好,但我需要它在刪除選定的過濾器之後基於當前選擇的過濾器評估新的FilterExpression。 – 2010-07-13 19:13:11
恐怕我不能在這裏獲得進一步的幫助,您可以聯繫Telerik在其網站的論壇上發帖。 – 2010-07-14 10:15:10
是否也是這樣:)偉大的思想都一樣! – 2010-07-14 10:47:32