web-dev-qa-db-ja.com

Telerikが選択されたIDを取得する(Radgridが選択したアイテムからデータを取得する)

グリッドビューの選択したインデックスを取得できますが、グリッド内にある実際のデータを取得したいと思います。グリッド内の行を選択して、「クライアントID」列の実際のデータ値にアクセスできるようにしたい。グリッドは正常に機能しており、SelectedIndexChangedイベントにアクセスできます。それから私は、グリッドに表示されている情報を取得する方法を見つけるために運が悪かったのです。どんな助けでも大歓迎です。

繰り返しますが、コードビハインドからグリッドに表示されるすべてのデータにアクセスする必要があります。

7
joncodo

これがデータキーの目的です。以下に示す例のように、アクセスする列をデータキーとして指定するだけです。

<telerik:RadGrid ID="RadGrid1" runat="server" ...>
    <MasterTableView DataKeyNames="Column1, Column2, Column3" ...>
        ...
    </MasterTableView>
</telerik>

マークアップでデータキーが割り当てられると、コードビハインド行で、またはSelectedValuesプロパティを使用してデータキーにアクセスできます。

if (RadGrid1.SelectedItems.Count > 0)
{
    //access a string value
    string column1 = RadGrid1.SelectedValues["Column1"].ToString();

    //access an integer value
    int column2 = (int)RadGrid1.SelectedValues["Column2"];
}
15
James Johnson

あなたはこのようにそれを行うことができます:

foreach (GridDataItem item in RadGrid1.MasterTableView.Items)
{
    if (item.selected == true)
        string mydata = item["ColumnName"].Text;
}

このサイトのドキュメントを読むことをお勧めします http://www.telerik.com/help/aspnet/grid/grdaccessingcellsandrows.html ; Telerikコンポーネントで大いに役立つことは間違いありません。

1
Zaphood

DataKeysを James Johnson 提案として使用します。 DataItemイベントのGridDataItemSelectedIndexChangedプロパティにアクセスすることはできません。 nullになります。 Telerikのドキュメント によると「DataItemオブジェクトは、グリッドがデータにバインドされている場合にのみ使用できます。」

DateItemイベントのように、ItemCreatedが使用可能な場合、元のデータ型MyTypeにキャストできます。

private void RadGrid_ItemCreated(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
    if ((e.Item is GridDataItem)) {
        GridDataItem gridDataItem = (GridDataItem)e.Item;
        MyType dataItem = (MyType)gridDataItem.DataItem;
    }
}
0
mika