Перезагрузите данные в Datagridview из базы данных для редактирования, используя значение Combobox - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь перезагрузить данные в сетку данных из базы данных для редактирования с использованием значения в выпадающем списке, но код генерирует еще один столбец PRODUCT в сетке данных. Снимок экрана и мои полные коды ниже. Как я могу перезагрузить данные в выходной колонке ПРОДУКТА. ИМЯ БАЗЫ ДАННЫХ: MyDb НАИМЕНОВАНИЕ СТОЛОВ: tblSALEITEMDETAILS НАИМЕНОВАНИЕ КОЛОННЫ: 1) ID, 2) ИМЯ ПРОДУКТА, 3) КОЛИЧЕСТВО, 4) СТАВКА, 5) INVOICENO

введите описание изображения здесь

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Configuration;
using System.Data.OleDb;

namespace invoiceedit
{
public partial class SALEINVOICE : Form
{
    static string conString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data 
Source=C:\Users\Ashfaque Baig\Documents\MyAccessDb\MyDb.accdb;Persist 
Security Info=False;";
    OleDbConnection con = new OleDbConnection(conString);
    OleDbCommand cmd = new OleDbCommand();
    DataTable dtProduct = new DataTable();
    DataTable dtCustomer = new DataTable();
    DataTable dtInvoiceNo = new DataTable();
    DataGridViewComboBoxColumn PRODUCTNAME = new 
    DataGridViewComboBoxColumn();


    public SALEINVOICE()
    {
        InitializeComponent();
    }

    private void SALEINVOICE_Load(object sender, EventArgs e)
    {
        CreatDataGridColumns();

        CUSTOMERLIST();
        combCUSTOMERNAME.DataSource = dtCustomer;
        combCUSTOMERNAME.DisplayMember = "CUSTOMERNAME";

        INVOICENOLIST();
        combINVOICENO.DataSource = dtInvoiceNo;
        combINVOICENO.DisplayMember = "INVOICENO";
    }
    private DataSet CUSTOMERLIST()
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        OleDbCommand cmd;
        DataSet dsCustomer = new DataSet();
        //SELECT STMTS

        string tblCustomer = "SELECT * FROM tblCUSTOMER";

        //PRODUCTTABLE
        cmd = new OleDbCommand(tblCustomer, con);
        adapter.SelectCommand = cmd;

        adapter.SelectCommand.CommandText = tblCustomer;
        adapter.Fill(dsCustomer, "CUSTOMERNAME");
        dtCustomer = dsCustomer.Tables[0];
        return dsCustomer;
    }

    private DataSet PRODUCTLIST()
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        OleDbCommand cmd;
        DataSet dsProduct = new DataSet();
        //SELECT STMTS

        string tblPRODUCT = "SELECT * FROM tblPRODUCT";

        //PRODUCTTABLE
        cmd = new OleDbCommand(tblPRODUCT, con);
        adapter.SelectCommand = cmd;

        adapter.SelectCommand.CommandText = tblPRODUCT;
        adapter.Fill(dsProduct, "PRODUCTNAME");
        dtInvoiceNo = dsProduct.Tables[0];
        return dsProduct;

    }

    private DataSet INVOICENOLIST()
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        OleDbCommand cmd;
        DataSet dsPurchaseGrnList = new DataSet();
        //SELECT STMTS

        string tblSALEBILDETAILS = "SELECT * FROM tblSALEBILDETAILS";

        //PRODUCTTABLE
        cmd = new OleDbCommand(tblSALEBILDETAILS, con);
        adapter.SelectCommand = cmd;

        adapter.SelectCommand.CommandText = tblSALEBILDETAILS;
        adapter.Fill(dsPurchaseGrnList, "INVOICENO");
        dtInvoiceNo = dsPurchaseGrnList.Tables[0];
        return dsPurchaseGrnList;
    }
    public void CreatDataGridColumns()
    {
        //ADD COLUMNS

        DataGridViewComboBoxColumn PRODUCTNAME = new 
DataGridViewComboBoxColumn();
        PRODUCTNAME.HeaderText = "PRODUCTNAME";
        PRODUCTNAME.Name = "PRODUCTNAME";
        PRODUCTNAME.AutoComplete = true;
        PRODUCTNAME.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
        PRODUCTNAME.DisplayMember = "PRODUCTNAME";
        PRODUCTNAME.Width = 200;

        ArrayList row = new ArrayList();
        //FILL ARRAYLIST FROM DATATABLE
        foreach (DataRow dr in dtProduct.Rows)
        {
            row.Add(dr["PRODUCTNAME"].ToString());
        }
        //ADD TO COMBO
        PRODUCTNAME.Items.AddRange(row.ToArray());

        //ADD THE COMBO TO DATAGRIDVIEW

        dataGridITEMDETAILS.Columns.Add(PRODUCTNAME);
        PRODUCTNAME.DataSource = PRODUCTLIST().Tables[0];



        DataGridViewColumnCollection columns = dataGridITEMDETAILS.Columns;


        DataGridViewTextBoxColumn textColumn = new 
DataGridViewTextBoxColumn();
        textColumn.DataPropertyName = "QUANTITY";
        textColumn.Name = "QUANTITY";
        textColumn.HeaderText = "QUANTITY";
        textColumn.ValueType = typeof(string);
        textColumn.Visible = true;
        columns.Add(textColumn);

        textColumn = new DataGridViewTextBoxColumn();
        textColumn.DataPropertyName = "RATE";
        textColumn.Name = "RATE";
        textColumn.HeaderText = "RATE";
        textColumn.ValueType = typeof(string);
        textColumn.Visible = true;
        columns.Add(textColumn);

        textColumn = new DataGridViewTextBoxColumn();
        textColumn.DataPropertyName = "AMOUNT";
        textColumn.Name = "AMOUNT";
        textColumn.HeaderText = "AMOUNT";
        textColumn.ValueType = typeof(string);
        textColumn.Visible = true;
        columns.Add(textColumn);



    }

    private void combINVOICENO_SelectedIndexChanged(object sender, EventArgs e)
    {
        cmd = new OleDbCommand("SELECT * FROM tblSALEBILDETAILS where INVOICENO='" + combINVOICENO.Text + "'", con);
        con.Open();
        cmd.ExecuteNonQuery();
        OleDbDataReader dr;
        dr = cmd.ExecuteReader();
        while (dr.Read())
        {
            string InvoiceDate = (string)dr["INVOICEDATE"].ToString();
            string InvoiceNo = (string)dr["INVOICENO"].ToString();
            string CustomerName = (string)dr["CUSTOMERNAME"].ToString();


            txtDATE.Text = InvoiceDate;
            txtINVOICENO.Text = InvoiceNo;
            combCUSTOMERNAME.Text = CustomerName;

        }
        con.Close();

        {
            con.Open();
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = con;

            string query = "SELECT PRODUCTNAME,QUANTITY,RATE FROM tblSALEITEMDETAILS where INVOICENO='" + combINVOICENO.Text + "'";

            cmd.CommandText = query;

            OleDbDataAdapter da = new OleDbDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            dataGridITEMDETAILS.DataSource = dt;
            PRODUCTNAME.DisplayMember = "PRODUCTNAME";

            con.Close();
        }
    }
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...