1

私は C# から始めていますが、いくつか問題があります。

赤 = DB に追加して更新

2 番目のウィンドウ フォーム (agregar_en_directorio) にデータを保存し、最初のウィンドウ フォーム (generar_tarjeta) のコンボ ボックスに新しいデータを表示するときに、データを更新する方法を知りたいです。

Conexion: conectaraBD.cs

    public static SqlConnection ObtenerCOnexion()
    {
        SqlConnection Conn = new SqlConnection(@"Data source=MY-PC\SQLEXPRESS; Initial Catalog=myDatabase; User Id=user; Password=xxxx");
        Conn.Open();

        return Conn;
    }

コンボ:

    public void fillCombo()
    {
       string SQL = "select id_persona as identificador, clave_de_identificacion +' '+clave_de_la_dependencia +' '+grado_o_titulo+' '+nombre+' '+ ap+' '+ am DetallesCompletos from directorio";

        DataTable dt = new DataTable();

        using (SqlConnection Conn2 = conectaraBD.ObtenerCOnexion())
        {
            using (var cmd = new SqlCommand(SQL, Conn2))
            {

                try
                {
                    dt.Load(cmd.ExecuteReader());                        
                }
                catch (SqlException e)
                {
                    MessageBox.Show("Error al Cargar los Datos" + e.ToString(), "Error SQL",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        comboDe.DataSource = dt;
        comboDe.ValueMember = "identificador";
        comboDe.DisplayMember = "DetallesCompletos";
    }

注:コンボボックスに使用されるコードは次のとおりです(3つのコンボボックスに類似のものを使用)。

そして、GUIについてのあなたの意見を助けてくれるでしょう

4

1 に答える 1

1

解決しましたが、いくつか変更する必要がありました。

    public static DataTable dataFortheCombos()
    {
        DataTable dt = new DataTable();

        SqlConnection connection = new SqlConnection(@"Data source=SAMANIEGO-PC\SQLEXPRESS; Initial Catalog=banco_de_datos; User Id=user; Password=xxx");/

        string query = "select id_person as identifier, identification_key +' '+dependence_key +' '+degree_or_title+' '+name+' '+ ap+' '+ am as completedetails from directory"; 
        SqlCommand cmd = new SqlCommand(query, connection);

        SqlDataAdapter adap = new SqlDataAdapter(cmd);

        adap.Fill(dt);
        return dt;
    }

    public static AutoCompleteStringCollection autocompleteCombos()
    {
        DataTable dt = dataFortheCombos();

        AutoCompleteStringCollection coleccion = new AutoCompleteStringCollection();           
        foreach (DataRow row in dt.Rows)
        {
            coleccion.Add(Convert.ToString(row["completedetails"]));
        }

        return coleccion;
    }

     public void fillCombos()
    {                                
        comboFrom.DataSource = dataFortheCombos();
        comboFrom.DisplayMember = "completedetails"; //This is the value shown on the combo for the user
        comboFrom.ValueMember = "identifier"; // The selectedc value insert as identifier (is a number)
        comboFrom.SelectedIndex = -1; //Clear the combo            

        //NOTE -> The others combos (urned over and sender) using the same data

    }

イベント --onfocus-- は、ユーザーがコンボボックスの中にあるときに更新を呼び出すために使用されます。

     private void comboDe_Enter(object sender, EventArgs e)
            {
                comboFrom.DataSource = null //Clear the Combo Box
                 //NOTE -> The others combos (urned over and sender) using the same data
                fillCombos();                   
            }
于 2013-06-26T03:41:54.993 に答える