1

動的型を返す C#.net 4.0 でメソッドを作成しました。

public dynamic  GetEntertainmentDetails(int entertainmentId)
    {
        dynamic result = from PE in entities.ProductEntertainments
                     join PM in entities.ProductModels on PE.ProductModelID equals PM.ProductModelID
                     join PMA in entities.ProductMasters on PM.ProductUID equals PMA.ProductUID
                     join PMF in entities.ProductManufactorers on PMA.ManufactorerID equals PMF.ManufactorerID
                     where PE.EntertainmentID == entertainmentId
                     select new { PE.EntertainmentID, PMF.ManufactorerID, PMA.ProductUID, PM.ProductModelID, PE.CDPlayer, PE.CDChanger, PE.DVDPlayer, PE.Radio, PE.AudioSystemRemoteControl, PE.SpeakersFront, PE.SpeakersRear };
        return result;
    }

次のようなメソッドで結果を使用したい:

private void DisplayRecord()
    {
        dynamic item = dbContext.GetEntertainmentDetails(entertainmentId);
        this.cmbManufacturer.SelectedValue = item.ManufactorerID;
        this.cmbProducts.SelectedValue = item.ProductUID;
        this.cmbVariant.SelectedValue = item.ProductModelID;
        if (item.CDPlayer == true)
            this.cdPlayerYes.IsChecked = true;
        else
            this.cdPlayerNo.IsChecked = true;

    }

ただし、返される値は cmbManufactorer またはその他のコントロールで設定されていません。動的アイテムに値があることをテストしましたが、なぜ設定されていないのかわかりません。

それを処理する正しい方法ですか、それともここで間違っていますか?

更新: このコードを WPF アプリケーションで使用しています。ドロップダウンの SelectedValue プロパティを取得/設定できます。

4

3 に答える 3

1

そのようなドロップダウンで値を設定することはできませんSelectedValue is a read only property

// Assuming item.ManufactorerID is returning the index of selected item:- 

  cmbManufacturer.SelectedIndex  = item.ManufactorerID;

またはvalue、ドロップダウンがある場合:-

 cmbManufacturer.Items.FindByText("PassedValue").Selected = true;
于 2013-06-20T05:13:41.370 に答える
0

あなたの item.ManufactorerID について、どのような価値があるのか​​わかりません。

ただし、型に互換性がある場合は動的に機能するはずです。

例:

    dynamic s = "Item 3";
    drop1.SelectedValue  = s;

または

    dynamic s = 2;
    drop1.SelectedIndex   = s;

どちらも機能します。

于 2013-06-20T05:55:48.283 に答える