J'ai donc un dataGridView et une zone de texte sur un formulaire. Je veux être en mesure de rechercher dans le fichier dataGridView et le trier par rapport à la chaîne dans la zone de texte. ex: Je tape "acv" dans la zone de texte et toutes les chaînes contenant "acv" sont triées en haut. J'accomplis cela avec un tas de gymnastique impliquant datatable.select et un peu de compensation et de remplissage mais c'est moche et lent. Quelle serait la meilleure pratique/bonne/façon normale de faire cela?vb.net dataTable/DataGridView recherche/tri
Répondre
Utilisez un DataView filtré puis mis BindingSource de votre DataGridView au Filtré DataView. Si l'utilisateur efface la condition de filtre, rétablissez simplement BindingSource à votre vue par défaut d'origine. Je vous recommande de stocker la vue avant le tri afin que vous puissiez facilement revenir à la vue d'origine. Je l'utilise maintenant pour trier rapidement et cela fonctionne très bien. Remplacez les noms de colonnes par les vôtres. Vous devriez être en mesure de modifier l'aperçu de données à partir du DataGridView d'origine et appliquer le filtre sans re-liaison. Il suffit de lier votre DataGridView à un DataView au début, puis de récupérer le DataView (c'est-à-dire DataSource) et de le modifier. Je ne suis pas sûr si vous utilisez un BindingNavigator ou non. Bonne chance.
Dim myDataTable As DataTable = myDataSet.Tables(0)
Dim myDataView As New DataView(myDataTable)
myDataView.RowFilter = "CompanyName LIKE '%" & ddlAlpha.SelectedItem.Text & "%'"
myDataView.Sort = "ContactName"
dataGridView1.DataSource = myDataView
dataGridView1.DataBind()
Jetez un coup d'œil à this tutorial. J'ai utilisé la même idée de filtrage de table en utilisant jQuery et ça a très bien marché pour moi. Voici ce que je:
$(document).ready(function()
{
$('#filter').keyup(function(event)
{
//if esc is pressed or nothing is entered
if (event.keyCode == 27 || $(this).val() == '')
{
//if esc is pressed we want to clear the value of search box
$(this).val('');
//we want each row to be visible because if nothing
//is entered then all rows are matched.
$('tbody tr').removeClass('visible').show().addClass('visible');
}
else
{
// drill down and find the ONE table out of many.
var theTable = $('div.rgDataDiv').find('table.rgMasterTable').find('tbody tr');
//if there is text, lets filter
filter(theTable, $(this).val());
}
});
});
//filter results based on query
function filter(selector, query)
{
query = $.trim(query); //trim white space
query = query.replace(/ /gi, '|'); //add OR for regex
$(selector).each(function()
{
($(this).text().search(new RegExp(query, "i")) < 0) ? $(this).hide().removeClass('visible') : $(this).show().addClass('visible');
})
}
- 1. Localisation VB.NET
- 2. VB.NET Datagrid
- 3. VB.NET Localisation
- 4. string.split vb.net
- 5. VB.NET DownloadDataAsync:
- 6. Interfaces VB.NET
- 7. vb.net validation
- 8. Constructeurs VB.NET
- 9. vb.net traversal
- 10. Vb.Net CA1822
- 11. vb.net maintenant.anear
- 12. VB.Net Question
- 13. VB.NET QueryString
- 14. vb.net BindingSource.Find?
- 15. VB.NET - ThreadPool et déléguer en C# à VB.NET
- 16. Comportement du mot clé VB.NET WithEvents - Restriction du compilateur VB.NET?
- 17. IndexOutOfRangeException dans VB.NET
- 18. Référence code dans VB.NET
- 19. sécuriser app.config - VB.Net 3.5
- 20. VB.NET Collection fortement typée
- 21. VB.NET Extension Méthodes
- 22. appelant javascript vb.net
- 23. combobox in vb.net
- 24. VB.NET Static Code Anaylsis
- 25. VB.NET 2005 DataGridView Redessiner
- 26. membres statiques dans VB.NET
- 27. Unicode dans vb.net
- 28. workerRequest C# VB.NET à
- 29. MasterPage et ViewState (VB.Net)
- 30. itextsharp: pdfptable.writeselectedrows vb.net
Quel est le nombre maximal de lignes contenues dans le datatable? – overslacked
pas de maximum, mes données de test contiennent environ 7500+ lignes. pourrait être jusqu'à 50k. – Jacob
Utilisez-vous un serveur de base de données, ou provient-il d'un fichier XML, ou ...? – overslacked