aktualisiert
public class PopulateProduct
{
public string ProductDesc { get; set; }
public decimal UnitPrice { get; set; }
}
Dictionary<string, PopulateProduct> dict = new Dictionary<string, PopulateProduct>();
public void load()
{
string connstr = "user id=rawpic;password=admin";
string cmdtxt = @"select PRODUCT_ID,DESCRIPTION,UNIT_PRICE
from products";
AutoCompleteStringCollection autocom = new AutoCompleteStringCollection();
TB_PRODUCT_ID.AutoCompleteMode = AutoCompleteMode.Suggest;
TB_PRODUCT_ID.AutoCompleteSource = AutoCompleteSource.CustomSource;
TB_PRODUCT_ID.AutoCompleteCustomSource = autocom;
using (OracleConnection conn = new OracleConnection(connstr))
using (OracleCommand cmd = new OracleCommand(cmdtxt, conn))
{
try
{
conn.Open();
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
dict.Add((string)dr["PRODUCT_ID"],
new PopulateProduct()
{
ProductDesc = (string)dr["DESCRIPTION"],
UnitPrice = (decimal)dr["UNIT_PRICE"]
});
autocom.Add(dr["PRODUCT_ID"].ToString());
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message,"",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
}
private void TB_PRODUCT_ID_TextChanged(object sender, EventArgs e)
{
if (dict.ContainsKey(TB_PRODUCT_ID.Text))
{
TB_PRODUCTS_DESC.Text = dict[TB_PRODUCT_ID.Text].ProductDesc;
TB_UNIT_PRICE.Text = dict[TB_PRODUCT_ID.Text].UnitPrice.ToString();
}
}
------ Alte Skript unten -------
Ich bin Unter Verwendung von Code zur automatischen Vervollständigung textbox
Wertdaten dann automatisch den Wert von zwei weiteren textboxs
Produktbeschreibung ändern a nd Preis der Code unten funktioniert gut, aber die Beschreibung textbox
Wert nicht korrekt ist es den letzten Datensatz Datenbankwert bekommen, so dass jeder Vorschlag darüber?
endlich gibt es einen schnelleren Weg zur Auto-Vervollständigung ??
Notiz ist nicht notwendig, Beschreibung und Preis textbox
mit Produkt-ID synchronisieren zu aktualisieren sofort kann es nach Benutzern wählen Sie die Produkt-ID wie bei der Auswahl passieren, wenn das möglich und schneller bitte mir sagen, wie
private void TB_PRODUCT_ID_TextChanged(object sender, EventArgs e)
{
string connstr = "user id=rawpic;password=admin";
string cmdtxt = @"select PRODUCT_ID,DESCRIPTION,UNIT_PRICE
from products";
AutoCompleteStringCollection autocom = new AutoCompleteStringCollection();
TB_PRODUCT_ID.AutoCompleteMode = AutoCompleteMode.Suggest;
TB_PRODUCT_ID.AutoCompleteSource = AutoCompleteSource.CustomSource;
TB_PRODUCT_ID.AutoCompleteCustomSource = autocom;
using (OracleConnection conn = new OracleConnection(connstr))
using (OracleCommand cmd = new OracleCommand(cmdtxt, conn))
{
try
{
conn.Open();
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
autocom.Add(dr["PRODUCT_ID"].ToString());
TB_PRODUCTS_DESC.Text = dr["DESCRIPTION"].ToString();
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
ich habe müde Parameter für die select-Anweisung hinzuzufügen, bei denen ein Teil als unten, aber das wird nicht funktionieren
private void TB_PRODUCT_ID_TextChanged(object sender, EventArgs e)
{
string connstr = "user id=rawpic;password=admin";
string cmdtxt = @"select PRODUCT_ID,DESCRIPTION,UNIT_PRICE
from products
where PRODUCT_ID=:PRODUCTID";
AutoCompleteStringCollection autocom = new AutoCompleteStringCollection();
TB_PRODUCT_ID.AutoCompleteMode = AutoCompleteMode.Suggest;
TB_PRODUCT_ID.AutoCompleteSource = AutoCompleteSource.CustomSource;
TB_PRODUCT_ID.AutoCompleteCustomSource = autocom;
using (OracleConnection conn = new OracleConnection(connstr))
using (OracleCommand cmd = new OracleCommand(cmdtxt, conn))
{
try
{
conn.Open();
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
autocom.Add(dr["PRODUCT_ID"].ToString());
cmd.Parameters.Add(new OracleParameter("PRODUCTID", TB_PRODUCT_ID.Text));
TB_PRODUCTS_DESC.Text = dr["DESCRIPTION"].ToString();
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
Die erste Abfrage hat keine 'WHERE'-Klausel, weshalb sie nicht richtig funktioniert. Ihre zweite Abfrage tut das, aber Sie haben uns nicht gesagt, warum es "nicht funktioniert". Können Sie mehr Details angeben? –
Mit AutoCompleteStringCollection müssen Sie nicht ständig requery! Initialisieren Sie die Sammlung einfach mit ALLEN Wörtern, und .NET übernimmt die Filterung der Vorschläge, wenn der Benutzer schreibt. Das sollte dein Geschwindigkeitsproblem verschwinden lassen ... – SlimsGhost