2013-05-10 71 views
4

我想訪問radGrid控件中的值。鑑於下面的圖像,我想訪問「狀態」的值。但我似乎無法得到它。訪問radGrid列中的值

我得到一個錯誤信息

「無法投型 'TripLeg' 鍵入 'Telerik.Web.UI.GridDataItem' 的對象。」

任何想法如何訪問該列?

GridItem

+0

我注意到你檢查,以確保'hLink'不爲空。但是,它會在到達if(hLink!= null)之前拋出異常(如果'hLink'爲null)。請看我的答案。 – Win 2013-05-12 02:56:15

回答

3

你幾乎沒有。您只需要將DataItem投射到適當的物體。假設您的數據源是IEnumerable<TripLeg>

這裏的例子 - 我喜歡Telerik的成分很多

if (e.Item is GridDataItem) 
{ 
    var item = e.Item as GridDataItem; 
    var tripLeg = e.Item.DataItem as TripLeg; // Cast to appropriate object 
    var status = tripLeg.Status; 

    // var hLink = (HyperLink) item.FindControl("HyperLink1"); 
    // Above code will throw exception if the control is not found. 

    var hLink = item.FindControl("XXXXX") as HyperLink; 
    if(hLink != null) 
    { 
     hLink.Attributes.Add("XXXXX", "XXXXX"); 
    } 
} 
+0

我認爲這樣做的'Tripleg'對象必須是GridDataItem類型,它是一種只存在於RadGrid中的類型,即使轉換成功了,如果您可以直接訪問該值,爲什麼還要浪費資源轉換來自RadGrid控件 – Marcianin 2013-05-10 23:48:26

+0

@Marcianin - 'DataItem'必須是「TripLeg」類型(而不是其他方式)。爲了讓您的答案有效,您必須在'RadGrid'內部具有'UniqueName =「ColumnUniqueName」'的'GridBoundColumn'。在OP中,Csharp希望將'Tripleg'的'Status'屬性賦值給'GridTemplateColumn'內的'HyperLink'控件。 – Win 2013-05-11 18:00:05

+0

看看圖片,他已經在gItem.DataItem中擁有狀態值,他需要它來訪問這些數據,我的解決方案將訪問數據並將其分配給字符串。我的觀點是他不需要轉換任何東西,他已經擁有了他所需要的全部價值,就是獲得它。 GridDataItem就像GridView中的DataRow,Telerik控件是類固醇上的常規ASP控件!因此只需查詢具有它的列即可訪問DataRow上的數據 – Marcianin 2013-05-11 19:08:11