Suchen Sie in einem Kombinationsfeld

stimmen
0

Ich habe ein Kombinationsfeld genannt cbProduit; die Combo - Box wird über einen Webservice gefüllt:

ComboBoxItemProduit produiItem = new ComboBoxItemProduit();
produiItem.Text = articleArray.GetAllArticlesResult[i].S_MODELE;
produiItem.Value = articleArray.GetAllArticlesResult[i].S_ID;
cbProduit.Items.Add(produiItem);

Das Problem ist, das Kombinationsfeld, wenn es gefüllt ist, enthält mehr als 30.000 Artikel und ich brauche eine Suche nach Text zu machen.

Hinweis: Ich habe keine Beziehung mit einer Datenbank sind alle Informationen von einem Web Service kam.

Kann jemand bitte helfen?

Veröffentlicht am 18/12/2018 um 11:11
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
0

versuchen, diese keine Datenbank für diese Suche erforderlich

<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script> <p>Use this area to provide additional information.</p> <select id="drop" class="js-example-basic-single"  style="width:200px;">
    <option>Hiii</option>
    <option>I</option>
    <option>Am</option>
    <option>Doing</option>
    <option>Asp</option>
    <option>MVC</option>

</select>

<script>$(document).ready(function () {
    $('.js-example-basic-single').select2();    });
Beantwortet am 18/12/2018 um 13:29
quelle vom benutzer

stimmen
0

Sie können in einem Array die Werte der Combo-Box speichern und dieses Array nach Artikeln suchen. Verwenden Sie den folgenden Ansatz

//Declare a list of string in the general declarations section of the form as follows
List<string> liststr = new List<string>();
//Add this line when populating the combo box
liststr.Add(produiItem);
//under the text changed event of the combo box, add these lines of code.
cbProduit.Items.Clear;
foreach (string search in liststr)
{
    if (search.StartsWith(cbProduit.Text)) { 
          cbProduit.Items.Add(search);

    }    
}
Beantwortet am 18/12/2018 um 12:15
quelle vom benutzer

stimmen
0

gibt es zwei Optionen, die ich, dass passt Ihre Beschreibung sehen.

Option 1 :

Sie setzen eine Autocomplete-Eigenschaft für die Combobox wie folgt aus:

comboBox1.DataSource = dt;
comboBox1.ValueMember = "ID";
comboBox1.DisplayMember = "VALUE";
comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;

aber dann würde es funktioniert nur auf dem ersten Zeichen und wird eine Liste wie folgt zeigen: Geben Sie hier image description

Option 2 :

ein neues Textfeld mit einem Textchanged-Ereignisse setzen:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    if (string.IsNullOrEmpty(textBox1.Text))
    {
        comboBox1.DataSource = dt; //your origin data

    }
    else
    {
        var newTable = dt.AsEnumerable()
      .Where(x => x.Field<string>("VALUE").ToUpper().Contains(textBox1.Text.ToUpper()))
      .CopyToDataTable();

        comboBox1.DataSource = newTable;

    }
}

während dt Ihre Ursprungsdaten, die vom Server kamen und ist das Ergebnis folgendermaßen aus: Geben Sie hier image description

Beantwortet am 18/12/2018 um 12:14
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more