2011-11-07 19 views
0

私はTelerik RadGridを使用しており、一意の名前 "ChangeAddr"を持つGridTemplateColumnを持っています。基本的に、ユーザは1つまたは複数のボックスをチェックし、次に「アドレス変更」ボタンをクリックすることにより、ユーザは選択された行/製品のアドレスを変更することができる。LINQを使用してRadGridViewからDataKeyValuesのリストを取得

チェックボックスIDは、chkChangeAddrです。 DataKeyNameはOrderProductIDです。

さて、ここで私が持っているコードは、ユーザーがボタンをクリックしたときのためです:

var OrderProductIDs = (from GridDataItem item in rgShipProducts.Items 
           where ((CheckBox)item.FindControl("chkChangeAddr")).Checked 
           select int.Parse(rgShipProducts.MasterTableView.DataKeyValues[item.ItemIndex]["OrderProductID"].ToString())).ToList(); 

しかし、それは何も返しません。私は、各項目または何かを「アクセス」ではないてるよう

rgShipProducts.MasterTableView.DataKeyValues[item.DataSetIndex]["OrderProductID"].ToString() 

だから、それはそう:それが助け場合

、私は正常にこの同じスニペットを使用してDataKeyValueを取得できOnItemDataBoundのイベントがあります。私はこれを通常のListViewでやったことがありますが、RadGridでは決して行っていません。どんな助けでも大歓迎です。

おかげで、 アンドリュー

+0

最初のスニペットは、インデックスとしてItemIndexを持ち、2番目のスニペットにはDataSetIndexがあります。それは重要ですか? – sq33G

+0

私は両方のバリエーションでそれを試しましたが、別の結果は得られませんでした。しかし、ありがとう。 – ajtatum

答えて

2

は、以下のコードで試してください。

List<GridDataItem> Items = (from item in rgShipProducts.MasterTableView.Items.Cast<GridDataItem>() 
           where ((CheckBox)item.FindControl("chkChangeAddr")).Checked 
           select item).ToList(); 

    if (Items.Count > 0) 
    { 
     string strkey = Items[0].GetDataKeyValue("ID").ToString(); 
    } 
関連する問題