2013-04-13 21 views
9

私が設定したValueMember値を取得しようとするといくつか問題があります。私は、コンボボックスを使用してWindowsフォームレポートを選択しようとしています。名前は取得できますが、RptValueは取得できません。ここに私のコード:ComboBox C#WinformsからValueMember値を取得する方法?

 private class Data 
    { 
     public string Name { get; set; } 
     public string RptValue { get; set; } 
    } 

    private void BaseForm_Load(object sender, EventArgs e) 
    { 
     this.rvDoctorReportViewer.RefreshReport(); 
     comboBox1.Items.Add(new Data { Name="Select", RptValue="Select"}); 
     comboBox1.Items.Add(new Data { Name = "All Food Values", RptValue = "AllFoodValues.rdlc" }); 
     comboBox1.Items.Add(new Data { Name = "All Readings", RptValue = "AllReadings.rdlc" }); 
     comboBox1.Items.Add(new Data { Name = "Avg Food Values by Date", RptValue = "AvgFoodValuesByDate.rdlc" }); 
     comboBox1.Items.Add(new Data { Name = "Avg Food Values by Meal", RptValue = "AvgFoodValuesByMeal.rdlc" }); 
     comboBox1.Items.Add(new Data { Name = "Avg Readings by Date", RptValue = "AvgReadingsByDate.rdlc" }); 
     comboBox1.Items.Add(new Data { Name = "Avg Readings by Time", RptValue = "AvgReadingsByTime.rdlc" }); 
     comboBox1.Items.Add(new Data { Name = "Avg Readings by Event", RptValue = "AvgReadingsByEvent.rdlc" }); 
     comboBox1.Items.Add(new Data { Name = "Blood Pressure Chart", RptValue = "BPChart.rdlc" }); 
     comboBox1.Items.Add(new Data { Name = "Blood Pressure Report", RptValue = "BPReport.rdlc" }); 
     comboBox1.Items.Add(new Data { Name = "Detail Food Values by Meal", RptValue = "DetailFoodValuesByMeal.rdlc" }); 
     comboBox1.Items.Add(new Data { Name = "Doctor Detail Report", RptValue = "DoctorDetailReport.rdlc" }); 
     comboBox1.Items.Add(new Data { Name = "Food Chart", RptValue = "FoodChart.rdlc" }); 
     comboBox1.Items.Add(new Data { Name = "Pumper Detail Report", RptValue = "PumperDetailReport.rdlc" }); 
     comboBox1.Items.Add(new Data { Name = "Reading Charts", RptValue = "ReadingCharts.rdlc" }); 
     comboBox1.Items.Add(new Data { Name = "Total Daily Food Intake", RptValue = "TotalIntakeDailyFood.rdlc" }); 
     comboBox1.DisplayMember = "Name"; // This works fine 
     comboBox1.ValueMember = "RptValue"; // This is the problem. It renders as RptValue instead of the value 
     comboBox1.SelectedIndex = 0; 
    } 

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (comboBox1.SelectedIndex > 0) 
     { 
      string strReport; 
      strReport = "ReportViewer." + comboBox1.ValueMember.ToString(); 
      rvDoctorReportViewer.Reset(); 
      rvDoctorReportViewer.LocalReport.ReportEmbeddedResource = strReport; 
      this.rvDoctorReportViewer.RefreshReport(); 
     } 
    } 

答えて

15

あなたはDataSourceプロパティを使用する必要があります。これは私のために働いた

strReport = "ReportViewer." + comboBox1.SelectedValue; 
+0

を[OK]を、今私は別のエラーを取得しています選択した値にアクセス後、

BindingList<Data> _comboItems = new BindingList<Data>(); _comboItems.Add(new Data { Name = "Select", RptValue = "Select" }); _comboItems.Add(new Data { Name = "All Food Values", RptValue = "AllFoodValues.rdlc" }); ... comboBox1.DataSource = _comboItems; comboBox1.DisplayMember = "Name"; comboBox1.ValueMember = "RptValue"; 

そして、これを試してみてください報告自体。 "ローカルレポート処理中にエラーが発生しました。" reportname "のレポート定義が指定されていません。オブジェクト参照がオブジェクトのインスタンスに設定されていません。何か案は? – bbcompent1

+0

@ bbcompent1いくつかのコードを見ることなく何も言い切れません。 :)私はそれが 'ReportPath'とは何か関係があると思います(しかし、わかりません)。この特定の問題について新しい質問を投稿することをお勧めします。 – MAV

+0

よろしくお願いします。再度ありがとう – bbcompent1

5
String s; 
    s=comboBox1.SelectedValue.tostring() 
0

combobox.valuemember="id" 
    combobox.displaymember="name" 
    combobox.datasource=dt