0

2 番目のバージョン

ListBox次のコードを使用してデータを入力しています

private BindingSource sri = new BindingSource();

public void sola()
{
    sri.DataSource = llenar.Tables["tipoender"];
    listBox1.DataSource = sri;
    listBox1.ValueMember = "end_tipoendereco";
    listBox1.DisplayMember = "tpl_descricao";
}

列 ID_tipoauditoria 値 =2 レコードがロードされていない場合、これを DELETE (値 2 で決定された列で更新) に使用します。このコードは機能しています

DataSet grava = new DataSet();
SqlDataAdapter da4 = new SqlDataAdapter();
SqlCommandBuilder constru8 = new SqlCommandBuilder(da4);
SqlParameter codi = new SqlParameter("@emp", SqlDbType.Int);
codi.Value = codem;
SqlCommand llena10 = new SqlCommand("dmlpjende", conec1);
llena10.Parameters.Add(codi);
llena10.CommandType = CommandType.StoredProcedure;
da4.SelectCommand = llena10;
da4.Fill(grava, "endere");
DataRow dr2 = grava.Tables["endere"].Rows[ni];
// listBox1.BackColor = Color.Red;
dr2.BeginEdit();
dr2["id_tipoauditoria"] = 2;
dr2.EndEdit();
da4.Update(grava.Tables["endere"]);

を更新する最良の方法は何ListBoxですか? バインディングをリセットしようとしましたが、成功しませんでした。データセットまたはリストボックスを更新するだけです。

4

2 に答える 2

0

リストボックスを更新し、データセットを再度ロードするという問題を解決しました。

    public void cargill()
    {
        campo = "60435351000319";
        llenar = ifd.consulta_cnpj(campo);
        sola();
    }

    public void sola()
    {
        sri.DataSource = llenar.Tables["tipoender"];
        listBox1.DataSource = sri;
        listBox1.ValueMember = "end_tipoendereco";
        listBox1.DisplayMember = "tpl_descricao";
    }

          DataSet grava = new DataSet();
            SqlDataAdapter da4 = new SqlDataAdapter();
            SqlCommandBuilder constru8 = new SqlCommandBuilder(da4);
            SqlParameter codi = new SqlParameter("@emp", SqlDbType.Int);
            codi.Value = codem;
            SqlCommand llena10 = new SqlCommand("dmlpjende", conec1);
            llena10.Parameters.Add(codi);
            llena10.CommandType = CommandType.StoredProcedure;
            da4.SelectCommand = llena10;
            da4.Fill(grava, "endere");
            DataRow dr2 = grava.Tables["endere"].Rows[ni];
            dr2.BeginEdit();
            dr2["id_tipoauditoria"] = 2;
            dr2.EndEdit();
            da4.Update(grava.Tables["endere"]);
            cargill();        

私は dispose と refresh を使用するのが好きですが、この方法で機能します。

于 2012-11-07T13:20:18.060 に答える
0

私はあなたの質問を完全に誤解しているかもしれませんが、これはうまくいくかもしれません:

public void sola()
{
    sri.DataSource = llenar.Tables["tipoender"];
    listBox1.DataSource = sri;
    listBox1.ValueMember = "end_tipoendereco";
    listBox1.DisplayMember = "tpl_descricao";
    listBox1.DataBind(); // this was missing
}

特に、実際のデータバインディングのために追加した最後の行。これで問題は解決しますか? listBox1.Refresh()そうでない場合は、コメントで提案されているように、後で電話するとどうなりますか。

于 2012-11-06T13:55:45.173 に答える