J'ai un Datatable avec des colonnes nommées foldername
, documentname
. Données comme ci-dessous:
FolderName DocumentName
Folder1 HR[D] Document
Folder1 ___----'
Folder1 Asp_example.pdf
Folder2 SD
Folder3 Heavy_weight
Folder3 Accesorial Services
Comment alphabetically
trier DocumentName en fonction de FolderName dans .Net Framework 2.0
.
La solution que nous avons essayée est la suivante mais prend trop de temps car elle contient plus de 1200 000 enregistrements.
int counter=0;
while (counter < searchDT.Rows.Count){
string FolderName = Convert.ToString(searchDT.Rows[counter]["Folder Name"]);
string exp = "[Folder Name] like '" + FolderName + "'";
if (FolderName.Contains("%") || FolderName.Contains("_") || FolderName.Contains("[]") || FolderName.Contains("'"))
exp = "[Folder Name] like '" + EscapeLikeValue(FolderName) + "'";
string sortExpression = "[Document Name] ASC";
DataRow[] drfoldername = searchDT.Select(exp, sortExpression);
foreach (DataRow row in drfoldername)
drfoldernameDT.ImportRow(row);
counter += drfoldername.Length;
}
DataTable dt= new DataTable();
DataView dv = new DataView(dt);
dv.Sort = "FolderName, DocumentName ASC";
Essayez ça. Il va d'abord trier FolderName, puis DocumentName.
Si vous devez envoyer cela à un composant de l'écran, vous pouvez procéder comme vous le faites avec un DataTable.
Voici ma solution à ce problème:
Datatable FI = new Datatable();
DataView viewFI = new DataView(FI);
viewFI.Sort = "ServiceDate, ServiceRoute";
DataTable OFI= viewFI.ToTable();
Avez-vous essayé DataView.Sort?
dt.DefaultView.RowFilter = "FolderName , DocumentName ASC";
dt = dt.DefaultView.ToTable();
Vous pouvez utiliser
oDataSet.Tables[0].DefaultView.Sort = "Column1 ASC ";
Si vous liez le dgv en utilisant un datatable, vous pouvez utiliser quelque chose comme:
DataTable dtable = (DataTable) dgv.DataSource; Dtable.DefaultView.Sort =
Vous pouvez aussi vérifier ceci:
http://www.codeproject.com/csharp/datagridsort.asp
merci