2016-04-05 14 views
0

Verileri, birleşik giriş kutusunda seçilen arabanın boyutuna bağlı olarak bir datagrid görünümünde görüntüleyecek kod yazmayı deniyorum. Bu kod başlangıçta çalıştırıldığında, varsayılan olarak büyüklükteki ekonomiye döner ve datagrid görünümünde doğru bilgileri görüntüler. Ancak, birleşik giriş kutusunda farklı bir boyut seçildiğinde, datagridview aynı kalırken metin kutuları doğru şekilde güncellenir. Açılan kutunun her değiştiğinde güncellenmesi için ne yapabilirim? "Private void cboSize_selectionChangeCommitted()" içindeki kodun bunu gerçekleştireceğini sanmıştım, ancak çıktıda hiçbir değişiklik yoktu.Birleşik kutu seçimini temel alan datagridview nasıl güncellenir?

namespace carForm 
{ 
    public partial class Form1 : Form 
    { 
     _Cars_1_DataSet cDataSet; 
     BindingSource sizeBindingSource; 
     BindingSource vehicleBindingSource; 
     CarsDataClass clsCarsData; 

     Boolean gridInitialized; 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void exitToolStripMenuItem_Click(object sender, EventArgs e) 
     { 
      this.Close(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      // TODO: This line of code loads data into the '_Cars_1_DataSet.Reservations' table. You can move, or remove it, as needed. 
      this.reservationsTableAdapter.Fill(this._Cars_1_DataSet.Reservations); 
      // TODO: This line of code loads data into the '_Cars_1_DataSet.Vehicle' table. You can move, or remove it, as needed. 
      this.vehicleTableAdapter.Fill(this._Cars_1_DataSet.Vehicle); 
      // TODO: This line of code loads data into the '_Cars_1_DataSet.CarSize' table. You can move, or remove it, as needed. 
      this.carSizeTableAdapter.Fill(this._Cars_1_DataSet.CarSize); 
      clsCarsData = new CarsDataClass(); 
      cDataSet = clsCarsData.GetDataSet(); 

      //Binding source sizes 
      sizeBindingSource = new BindingSource(); 
      sizeBindingSource.DataSource = cDataSet; 
      sizeBindingSource.DataMember = "CarSize"; 

      //Binding source vehicles 
      vehicleBindingSource = new BindingSource(); 
      vehicleBindingSource.DataSource = cDataSet; 
      vehicleBindingSource.DataMember = "Vehicle"; 

      //Combo box 
      cboSize.DataSource = sizeBindingSource; 
      cboSize.DisplayMember = "Size"; 
      cboSize.ValueMember = "SizeCode"; 

      //bind other controls 
      txtDaily.DataBindings.Add("text", sizeBindingSource, "DailyRate"); 
      txtMileage.DataBindings.Add("text", sizeBindingSource, "MileageRate"); 

      //execute combo box 
      cboSize_SelectionChangeCommitted(cboSize, e); 
     } 

     private void cboSize_SelectionChangeCommitted(object sender, EventArgs e) 
     { 
      string carSelected; 
      carSelected = Convert.ToString(cboSize.SelectedValue); 
      if (!gridInitialized) 
      { 
       dgvVehicles.DataSource = vehicleBindingSource; 
       gridInitialized = true; 
       ChangeGridColumns(); 
      } 
      vehicleBindingSource.Filter = "CarSize = '" + carSelected + "'"; 
     } 

     private void ChangeGridColumns() 
     { 
      //Change column headers 
      //dgvVehicles.Columns["Inv_ID"].Visible = false; 
     } 
    } 
} 

cevap

0

Tasarım görünümünde açılan kutuyu tıklattıktan sonra olaylar menüsünden SelectedIndexChanged olayını kullanmayı deneyin.

Bu kodunuzda doldurmak gerekir:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    Console.WriteLine("test!"); 
} 

İçeride size kodundan bu mantığı koyabilirsiniz:

string carSelected; 
carSelected = Convert.ToString(cboSize.SelectedValue); 
if (!gridInitialized) 
{ 
     dgvVehicles.DataSource = vehicleBindingSource; 
     gridInitialized = true; 
     ChangeGridColumns(); 
} 
vehicleBindingSource.Filter = "CarSize = '" + carSelected + "'"; 
+0

ile değiştirildi değişti İhtiyaç duydum, tıpkı @Wudge gibi, ama yanlış uygulamıştım. Olayı tasarım görünümünden oluşturmak yerine, elimle eklemek yerine sorunu çözdüm, teşekkür ederim. –

0

SelectionChangeCommitted yerine SelectedIndexChanged kullanın.

+0

ben sadece ve hiçbir şey çözüm oldu çıktı –

İlgili konular