A więc chcę stworzyć pseudo comboboxa...
a więc utworzyłem:
- TextBox3
- ListBox1
Jego zadanie to już w trakcie wpisywania pobierać dane z bazy i pokazywać najbardziej prawdopodobne 10 dokumentów
Dokumenty zazwyczaj mają nazwę, np: ZK 2131/11/2013
TEXTBOX z wpisanym "31"
ZK 2131/11/2013 - Klient 1
ZK 2131/11/2012 - Klient 2
ZK 1131/11/2013 - Klient 1
ZK 131/11/2013 - Klient 3
I teraz po wybraniu w textboxie ma się pojawiać tylko: "ZK 2131/11/2013" (bez nazwy klienta), ok więc utworzyłem sobie klasę:
public class cbItem
{
public string Text { get; set; } //ID
public string Value { get; set; } //PELNY
public string Klient { get; set; } //Klient
public cbItem()
{
}
public cbItem(string nValue, string nKlient)
{
//Text = nText;
Value = nValue;
Klient = nKlient;
}
public override string ToString()
{
StringBuilder sbi = new StringBuilder();
sbi.AppendFormat("{0} - {1}",Value,Klient);
return sbi.ToString();
}
public string ReturnText()
{
return Text;
}
public string ReturnValue()
{
return Value;
}
public string ReturnKlient()
{
return Klient;
}
}
a tu funkcja, która wywoływana jest przez klikniecie, na wybrany dokument w listboxie:
private void wybrano_zamowienie(object sender, EventArgs e)
{
if (listBox1.SelectedIndex.ToString()!="-1")
if (listBox1.SelectedItem.ToString() != "")
{
textBox3.Text = listBox1.SelectedItem.ToString();
zamowienie_wyswietl(textBox3.Text);
listBox1.Visible = false;
}
}
No i oczywiście, funkcja zamówienie wyświetl:
private void zamowienia_lista(int ile, string co)
{
//DataTable dt = new DataTable();
//string query = "";
StringBuilder sb = new StringBuilder();
if (ile == 0)
{
sb.Append("select");
}
else
{
sb.AppendFormat("select TOP {0}",ile.ToString());
}
sb.Append(" [dok_id],[dok_NrPelny],[kh_Symbol] from labe_pablo_dokument ");
if(co !="")
{
sb.AppendFormat(" where [dok_NrPelny] LIKE '%{0}%'",co);
}
zamowienia = conn_date.polaczenie_dt(sb.ToString());
cbItemDictionary.Clear();
foreach (DataRow dr in zamowienia.Rows)
{
cbItem item = new cbItem(dr["dok_NrPelny"].ToString(), dr["kh_Symbol"].ToString());
StringBuilder sbi = new StringBuilder();
sbi.AppendFormat("{0}", dr["dok_Id"].ToString());
cbItemDictionary.Add(sbi.ToString(), item);
}
listBox1.ValueMember = "Value";
listBox1.DataSource = new BindingSource(cbItemDictionary,null);
}
No i teraz pytanie, po skompilowaniu mojego strasznego kodu, w listboxie wyświetla mi się:
Tu jest jeszcze w porządku, jednak, po kliknięciu na któryś dokument z listy, zamiast wpisać mi się tylko "ZK 5077/MG/2013"
A wpisało się:
Proszę o pomoc dlaczego i jak to poprawić?
Z góry dziękuje i pozdrawiam
- fe9fce78b2.png (58 KB) - ściągnięć: 180
- ab3f2093ef.png (55 KB) - ściągnięć: 162