Member 13153537 Ответов: 2

Когда я выбираю bankname из таблицы базы данных, как заполнить текстовое поле Номер счета и тип счета выпадают из datatable в приложении C# windows


у меня есть приложение windows.В этом у меня есть две формы, одна из которых-форма банковского счета и форма чековой книжки. В форме банковского счета у меня есть текстовое поле bankname и выпадающий список accounttype, а также текстовое поле account no. после заполнения данных я могу вставить данные в таблицу sql.теперь моя проблема заключается в выпадающем списке chquebook form bankname,accountno textbox и account type drop down.banking name исходит из ранее вставленной базы данных.теперь я хочу, если я выберу bankname автоматически заполнить accountno и accounttype из datatable.Я свежее, пожалуйста, дайте мне любую идею.заранее спасибо.

Что я уже пробовал:

public void FillBankName()
        {
            DataRow dr;


            SqlConnection con = new SqlConnection(connection);
            con.Open();
            SqlCommand cmd = new SqlCommand("select bank_Id,bank_Name from bankdetails", con);
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            sda.Fill(dt);

            dr = dt.NewRow();
            dr.ItemArray = new object[] { 0, "--Select--" };
            dt.Rows.InsertAt(dr, 0);

            comboBox1.ValueMember = "bank_Id";

            comboBox1.DisplayMember = "bank_Name";
            comboBox1.DataSource = dt;

            con.Close();
        }

Richard MacCutchan

Вам просто нужно извлечь другие данные из базы данных и отобразить их в соответствующих полях формы.

2 Ответов

Рейтинг:
20

shreyal acharya

Заполнить Название Банка

public void FillBankName()
        {
            SqlConnection con = new SqlConnection(@"Connection");
            con.Open();
            SqlCommand cmd = new SqlCommand("select Bank_id,Bank_name from Bank_master", con);
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            sda.Fill(dt);
            Dictionary<string, string> test = new Dictionary<string, string>();
            test.Add("select one", "select one");

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                test.Add(dt.Rows[i]["Bank_name"].ToString(), dt.Rows[i]["Bank_id"].ToString());
            }

            comboBox1.DataSource = new BindingSource(test, null);
            comboBox1.ValueMember = "Value";
            comboBox1.DisplayMember = "Key";
            comboBox1.DataBindings.ToString();
            con.Close();
        }


Тип Банка Заполнения

public void FillBankType()
       {
           SqlConnection con = new SqlConnection(@"Connection");
           con.Open();
           SqlCommand cmd = new SqlCommand("select id,Bank_Type from bank_type", con);
           SqlDataAdapter sda = new SqlDataAdapter(cmd);
           DataTable dt = new DataTable();
           sda.Fill(dt);
           Dictionary<string, string> test = new Dictionary<string, string>();
           test.Add("select one", "0");

           for (int i = 0; i < dt.Rows.Count; i++)
           {
               test.Add(dt.Rows[i]["Bank_Type"].ToString(), dt.Rows[i]["id"].ToString());
           }
           comboBox2.DataSource = new BindingSource(test, null);
           comboBox2.ValueMember = "Value";
           comboBox2.DisplayMember = "Key";
           comboBox2.DataBindings.ToString();
           con.Close();
       }


Загрузка формы

private void Form1_Load(object sender, EventArgs e)
       {
           FillBankName();
           FillBankType();
       }


comboBox1_SelectedIndexChanged

string abc = comboBox1.SelectedValue.ToString();
           if (abc != "[select one, select one]" && abc != "select one")
           {
               SqlConnection con = new SqlConnection(@"Connection");
               con.Open();
               SqlCommand cmd = new SqlCommand("select Bank_Number,Bank_Type from Bank_master  where Bank_Id=@Bank_id", con);
               cmd.Parameters.AddWithValue("@Bank_id", comboBox1.SelectedValue.ToString());
               SqlDataAdapter sda = new SqlDataAdapter(cmd);
               DataTable dt = new DataTable();
               sda.Fill(dt);
               if (dt.Rows.Count > 0)
               {
                   textBox1.Text = dt.Rows[0]["Bank_Number"].ToString();
                   comboBox2.SelectedValue = dt.Rows[0]["Bank_Type"].ToString().Trim();
               }
               else
               {
                   MessageBox.Show("Data Not Found");
               }
           }


Member 13153537

Это прекрасно работает для меня в первый раз.После загрузки формы firsttime select показывает bankname. accountno и accounttype оба пусты.когда я выбираю bankname, оба они заполняются нормально,но после того, как я снова выбираю текст "select", данные отображаются в accountno и accounttype.В моей таблице bankname, acountno и accounttype исходят только из одной таблицы.
Большое спасибо за ваши усилия.

Рейтинг:
11

shreyal acharya

public void FillBankName()
        {
         //   DataRow dr;
 

            SqlConnection con = new SqlConnection(connection);
            con.Open();
            SqlCommand cmd = new SqlCommand("select bank_Id,bank_Name from bankdetails", con);
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            sda.Fill(dt);
 
           // dr = dt.NewRow();
           // dr.ItemArray = new object[] { 0, "--Select--" };
           // dt.Rows.InsertAt(dr, 0);
 
            comboBox1.ValueMember = "bank_Id";
 
            comboBox1.DisplayMember = "bank_Name";
            comboBox1.DataSource = dt;
            comboBox1.DataBindings.ToString();
            con.Close();
        }


 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection(connection);
            con.Open();
            SqlCommand cmd = new SqlCommand("select accountnumber,banktype from bank where bankid=@bankid", con);
            cmd.Parameters.AddWithValue("@bankid",comboBox1.SelectedValue);
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            sda.Fill(dt);

            textBox1.Text=dt.Rows[0]["accountnumber"].ToString();
           
            SqlCommand cmd2 = new SqlCommand("select type_id,type_name from banktype ", con);
           
            SqlDataAdapter sda2 = new SqlDataAdapter(cmd2);
            DataTable dt2 = new DataTable();
            sda.Fill(dt2);

            comboBox2.DataSource = dt;
            comboBox2.ValueMember = "type_id";

            comboBox2.DisplayMember = "type_name";

            comboBox2.DataBindings.ToString();

            comboBox2.SelectedValue=dt.Rows[0]["banktype"].ToString();
            con.Close();
        }


Member 13153537

Вы поняли мой вопрос

Member 13153537

Спасибо за ваш ответ.

shreyal acharya

Это решение поможет вам написать свой код?

Member 13153537

Привет, пожалуйста, помогите мне, как использовать один и тот же код в файле класса и называть его в интерфейсе по-разному.Заранее спасибо.

Member 13153537

Да, это полезно для меня.Но когда я запускаю программу, она по умолчанию берет первое название банка.Теперь мне нужно выбрать после загрузки формы.Как это сделать, понятия не имею.

shreyal acharya

ладно. Теперь сначала поместите мою функцию FillBankName () в событие загрузки формы, а затем дважды щелкните по Combobox и создайте comboBox1_SelectedIndexChanged и напишите приведенный выше код в событии Combobox.
После этого запустите форму и измените имя заполнения Combobox (название банка) Вы получите выбранные банковские данные в текстовом поле Type Combobox и номер счета.

Member 13153537

Я сделал то же самое.что происходит, когда форма загружается в первый раз, она принимает банкноту и заполняет номер счета и тип счета.Я хочу, чтобы после загрузки формы, место столбце bankname мне нужно, чтобы выделить текст.после того, как я могу выбрать мой столбце bankname.Как это сделать.Пожалуйста, помогите мне.