2013-03-07 35 views
0

在我們當前的項目中,我們使用telerik rad控件來開發silverlight項目, 根據登錄用戶列將顯示在數據網格中,對於某些用戶某些網格列被設置爲不可見,這導致了列之間的差距,當用戶登錄時,列之間的空間看起來不太好, 確實知道如何解決這個問題,非常感謝。Telerik Rad Grid查看標題空間

我們使用一個轉換器,

<telerik:GridViewDataColumn DataMemberBinding="{Binding LastQtyNotAvail}" Width="150" IsVisible="{Binding IsColumnVisibleToCustomer, Source={StaticResource PFOViewModel}}" IsReadOnly="True" TextAlignment="Right" HeaderTextAlignment="Center"/> 

public bool IsColumnVisibleToCustomer 
{get 
{ 
    return !WebContext.Current.User.IsInRole("Customer"); 
} 
} public bool IsInRole(string role) { if ((this.Roles == null)) { return false; } return global::System.Linq.Enumerable.Contains(this.Roles, role); 
} 
+0

你是如何設置的列是無形的?你有沒有嘗試刪除列而不是隱藏它們?你介意發佈一些代碼嗎? – Andrew 2013-03-08 21:55:31

+0

我更新了代碼,即時試圖向主要用戶顯示所有20列,向客戶顯示10列,除了使用隱形,可見性和刪除列以外,還有其他方法,謝謝您的回覆 – Karthik 2013-03-11 00:52:38

回答

0

您最好處理RadGridView的AutoGeneratingColumns事件。然後,您可以根據您想象的任何條件取消生成列。

The Telerik documentation will give you as good a sample as I can

如果你不使用的列自動生成,然後嘗試在Loaded事件刪除列(電網)來代替。

喜歡的東西:

void Grid_Loaded(object sender, RoutedEventArgs e) 
{ 
    RadGridView grid = sender as RadGridView; 
    var remove = ((IEnumerable<GridViewDataColumn>)grid.Columns).FirstOrDefault(o => o.UniqueName == "PropertyName"); 
    if (remove != null) 
    { 
     grid.Columns.Remove(remove); 
    } 
} 
+0

非常感謝你,它爲我工作,我做了代碼更改,因爲我有多個列被刪除,代碼看起來像這樣RadGridView grid = sender作爲RadGridView; List columnListnew = new List (); var column0 = grdProducts.Columns [「WeeklyUsage」]; columnListnew.Add(column0); foreach(columnListnew中的var列) grdProducts.Columns.Remove(column); } – Karthik 2013-03-11 20:53:50

0

我會用一些jQuery來檢查網格列的利潤基礎上的數量和設置填充或。我的猜測是,列仍然沒有內容,所以你也可以刪除那些使用jQuery。只需檢查$(「#column」)。html()==「」

+0

我更新了代碼,你可以請看看它,讓我知道..謝謝你的幫助.. – Karthik 2013-03-11 00:53:23