2011-12-21 28 views
0

私は複数の行を選択して右クリックした後、選択した1列の行をFalseに変更しました。'System.Data.DataRowView'型のオブジェクトを型 'Classオブジェクト'にキャストすることができません

私は、ようなコードを書いた:私はバックエンドとしてのMongoDBを使用しています

foreach (RiskSettings row in grdRiskAlerts.SelectedItems) 
{ 
    viewTrue.Update(Query.EQ("-id",ObjectId.Parse(row.ID)), Update.Set("View", "False")); 

} 

私は

型のオブジェクトをキャストすることができませんなどのエラーを取得しています「System.Data.DataRowView」「PravegaVegaFIXConsole.Configuration.RiskSettings」を入力し、上記と同じでした。

RiskSettingsは私のクラスです。型キャストの仕方は?

+0

詳細情報を追加してください:リスク設定はどのようにDataRowViewに関連していますか?エラーの行は何ですか? RiskSettingsコードはどこですか? –

答えて

0

これは、RiskSettingがDataRowViewから継承する場合にのみ機能します。

foreach (DataRowView drv in grdRiskAlerts.SelectedItems) 
    { 
     RiskSettings row=new RiskSettings(rdv); 
     viewTrue.Update(Query.EQ("-id",ObjectId.Parse(row.ID)), Update.Set("View", "False")); 

    } 

そしてRiskSettingsがDataRowViewパラメータを取るコンストラクタを持っていることを確認してください。そうしないと、DataRowViewからRiskSettingsを作成するために、クリエーターメソッドを使用する必要があります。より良いルートは、DataRowViewエントリを利用し、そこから必要なデータを抽出することです。

+0

貴重な提案をありがとう。私はあなたが言ったように同じことをしました。それは働いています – user768853

+0

これを追加した後、別の問題があります。グリッドにはリンクボタンがあります。リンクボタンをクリックすると、DataGridの行が新しいウィンドウに表示されます.I RiskSettingsとしてコードを追加しましたrs = grdRiskAlerts.SelectedItem as RiskSettings; if(rs!= null) { UpdateRiskAlerts updateRsk = new UpdateRiskAlerts(); updateRsk.risklogs = rs; updateRsk.Show(); } UpdateRiskAlertsは新しいwindow.risklogsはプロパティです。私は上記と同じです – user768853

+0

コードが正しく表示されません。代わりに質問を更新したり、新しい質問を出せますか? –

関連する問題