2017-09-16 14 views
1

こんにちは私は2つのdatagridviewを持つPOSシステムを持っています。バーコードをスキャンすると、製品は自動的にtextchangedイベント経由でカートのdatagridviewに追加されます。クリアボタンが押されたときにTextchangedイベントが機能しなくなる

正常に動作していますが、[クリアボタン]をクリックすると、textchangedイベントが機能しなくなります。どんな考えもありがとうございます。

クリアボタンコード:

private void btnClearcart_Click(object sender, EventArgs e) 
    { 
     dgvPOScart.Rows.Clear(); 
     dgvPOScart.Refresh(); 

     if (dgvPOSproduct.Rows.Count > 0) 
     { 
      dgvPOSproduct.DataSource = null; 
     } 

      DataTable dt = new DataTable("Products"); 

      using (SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["cnn"].ConnectionString)) 
      { 
       if (cnn.State == ConnectionState.Closed) 
        cnn.Open(); 
       using (SqlDataAdapter da = new SqlDataAdapter("Select ProductID, BrandName, GenericName, Quantity, SellingPrice, Dosage, Form, S,P, VE , Barcode , Category , Description from Products where Status = 'Active' and Quantity > 0", cnn)) 
       { 
        da.Fill(dt); 
        dgvPOSproduct.DataSource = dt; 
        productwidth(); 

       } 
      } 

    } 

コードは、フォーム負荷で製品のDataGridViewを移入します

DataTable dt = new DataTable("Products"); 

    private void dgvProductNew() 
    { 
     try 
     { 
      using (SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["cnn"].ConnectionString)) 
      { 
       if (cnn.State == ConnectionState.Closed) 
        cnn.Open(); 
       using (SqlDataAdapter da = new SqlDataAdapter("Select ProductID, BrandName, GenericName, Quantity, SellingPrice, Dosage, Form, S,P, VE , Barcode , Category , Description from Products where Status = 'Active' and Quantity > 0", cnn)) 
       { 
        da.Fill(dt); 
        dgvPOSproduct.DataSource = dt; 

        productwidth(); 

       } 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 
    } 

textchangedイベントコード:

private void txtBarcodeSearch_TextChanged(object sender, EventArgs e) 
    { 
     DataView dv = dt.DefaultView; 
     selectedRow = null; 

     dv.RowFilter = string.Format("Barcode like '{0}%' ", txtBarcodeSearch.Text); 
     productwidth(); 

     if (txtBarcodeSearch.Text.Length == 13) 
     { 

      if (dgvPOSproduct.Rows.Count == 1) 
      { 
       selectedRow = 0; 
      } 

      if (selectedRow.HasValue) 
      { 
       addcartbarcode(); 
       txtBarcodeSearch.Clear(); 
      } 

     } 
    } 
+0

productwidth()メソッドの実装は何ですか? –

+0

これは、product datagridview sirの列の幅の設定に過ぎません。 – StudentDev

+0

あなたはtextchangedイベントが正常に機能していないか、スキャン自体を確認していますか? –

答えて

0

あなたはTextChangedにデバッガを入れてチェックしていますイベント?それはテキストボックスのテキストを変更するときに起動する必要があるためです。

これはあなたの問題ではないと思います。

でも、間違っていないと次のような問題が発生する可能性があります。

txtBarcodeSearch_TextChangedイベントは常に発生し、行フィルタは必要に応じて行をフィルタリングしますが、同じDataTableオブジェクト(つまりdt)ではなくなります。 これは、同じデータテーブルオブジェクトをフィルタリングしていないことを意味します。以下のためにあなたがそう

private void btnClearcart_Click(object sender, EventArgs e) 
{ 
    dgvPOScart.Rows.Clear(); 
    dgvPOScart.Refresh(); 

    if (dgvPOSproduct.Rows.Count > 0) 
    { 
     dgvPOSproduct.DataSource = null; 
    } 

     //DataTable dt = new DataTable("Products"); //this was your issue 
     dt = new DataTable("Products");   //this will work 

     using (SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["cnn"].ConnectionString)) 
     { 
      if (cnn.State == ConnectionState.Closed) 
       cnn.Open(); 
      using (SqlDataAdapter da = new SqlDataAdapter("Select ProductID, BrandName, GenericName, Quantity, SellingPrice, Dosage, Form, S,P, VE , Barcode , Category , Description from Products where Status = 'Active' and Quantity > 0", cnn)) 
      { 
       da.Fill(dt); 
       dgvPOSproduct.DataSource = dt; 
       productwidth(); 

      } 
     } 

} 

としてクリアボタンをクリックすると、クリアボタンの後にあなたのDataGridViewのは、新しいデータテーブルインスタンスにあなたがクリックするたびにバインドする]をクリックしますbtnClearcart_Clickイベントに個人1は、公共およびその他の、二回DTオブジェクトを宣言していますクリアボタンで。あなたのtextchageイベントは、もはやdatagridviewにバインドされていない最初のdtオブジェクト(datatable)のみをフィルタリングしていました。

+0

はい、私は本当にdatatableも問題だと思うし、あなたは正しいです。今は本当にありがとう! – StudentDev

+0

遅くとも回答を受け付けて申し訳ありません。私は非常に忙しかったです。 – StudentDev

+0

あなたは大歓迎です。 –

関連する問題