2011-10-11 10 views
4

から値を取得します。は、私は私のaspxページ(簡体字)に次のコードを持っているサーバ側でGridTemplateColumn(Telerik RadGrid)

<telerik:RadGrid ID="rgd_grid" runat="server"> 
<MasterTableView> 
<Columns> 
    <telerik:GridTemplateColumn UniqueName="Unique" HeaderText="Header" DataField="dataField"> 
    <ItemTemplate> 
      <%# DataBinder.Eval(Container.DataItem, "expression") %> 
    </ItemTemplate> 
    </telerik:GridTemplateColumn> 
</Columns> 
</MasterTableView> 

私はちょうどの値を取得するには、グリッド内のループを行う必要がありますコードビハインドでセルが、私は、「エバール」式の値を取得する方法を見つけないました...私は次のことを試してくださいました:

rgd_grid.MasterTableView.Items[0]["Unique"].Text; 

しかし、すべてつつ、textプロパティは、空であります他は正しいです。実際、私は他の多くのことを試みましたが、これは目的に最も近いようです。

よろしくお願いいたします。

答えて

4

返された商品がヘッダーなどではないと確信していますか?ヘッダーは結果に含まれていると思うが、間違っている可能性がある。

これが機能しない場合は、テンプレート内のLabelコントロールを使用してIDでコントロールを見つけることができます。

+0

R adGridはデータキーをサポートし、データを取得するための豊富な機能を備えています。セルから* value *を取得する必要はありません。 –

+0

@James、はい、データをユーザーに表示したい場合は...また、列の型がGridBoundColumnの場合はValueプロパティを使用する必要があります。値を使用するシナリオはたくさんありますプロパティ.... –

+0

私たちは2つの異なることを話していると思います。セルからテキストを取得するのではなく、データキーを使用することができます。 –

2

データキーを使用してグリッドから値を取得する必要があります。

あなたはこのように、あなたが必要とする列を指定するMasterTableViewDataKeyNamesプロパティを使用することができます。

<telerik:RadGrid ID="RadGrid1" runat="server" ...> 
    <MasterTableView DataKeyNames="Col1, Col2, Col3" ...> 

そして、コードビハインドで:

string col1 = RadGrid1.Items[0].GetDataKeyValue("Col1").ToString(); 
+0

セルの「リテラル」コンテンツを取得する他の方法はありませんか?私は次のようなケースがあります。DataBinder.Eval(Container.DataItem、 "InOut")。Equals( "I")? "In": "Out" ... DataKeyは "In"の代わりに "I"を返します(例)...返信ありがとう! – Kira

+0

セルからリテラルコンテンツを取得するためのBrianの答えを参照できます。 –

0

ここでもう一つの方法です、など私は、DataBinderを使用してリテラルコンテンツを表示し、それを表示します:

protected void RadGrid_OnItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e) 
    { 
     if (e.Item is GridDataItem) 
     { 
      GridDataItem dataItem = e.Item as GridDataItem; 
      var test = DataBinder.Eval(dataItem.DataItem, "Column").ToString();     
     } 
    } 
関連する問題