2009-02-12 3 views
1

Je rencontre un problème lors du tri d'un ListBox avec une liste déroulante. La liste déroulante aura 2 options:Tri d'un ListBox lié à un ObjectDataSource à l'aide d'une liste déroulante avec 2 sélections

  1. Trier par #

  2. Trier par type

La zone de liste contient une liste d'éléments qui sont d'abord classés par ordre croissant par #. Il a le format suivant:

  1. 1: Red
  2. 2: Vert
  3. 3: Bleu
  4. 4: Red
  5. 5: Red

Si l'utilisateur choisit Trier Par #, il devrait trier dans l'ordre décroissant s'il est déjà dans l'ordre croissant et s'il est dans l'ordre croissant s'il est dans l'ordre décroissant. Si l'utilisateur choisit Par type, il faut commander les couleurs, puis #, donc la liste ci-dessus devient:

  1. 1: Red
  2. 4: Red
  3. 5: Red
  4. 2: Vert
  5. 3: Bleu

Le lisbox est obtient ses données à partir d'un ObjectDataSource qui est défini comme suit:

<asp:ObjectDataSource ID="odsColors" runat="server" SelectMethod="GetColors" 
     TypeName="XaiSoft.Data"> 
</asp:ObjectDataSource> 

J'ai écrasa une méthode de tri, mais c'est là où je suis coincé à, je ne suis pas sûr de savoir comment faire:

public void SortColorList() 
{ 

} 

Je mis à jour la méthode ci-dessus pour montrer ce que je suis Cela va, mais j'obtiens l'erreur suivante:

DataSource et DataSourceID sont définis sur 'lstColors'. Supprimer une définition

protected void SortColorList() 
{ 

    XaiSoft.Data.Colors c = new XaiSoft.Data.Colors(); 
    DataTable dt = c.GetColorList(); 
    DataView dv = new DataView(dt); 

    dv.Sort = "[" + dv.Table.Columns["ColorName"].ColumnName + "] asc"; 
    lstAuctions.DataSource = dv; //Error happens here. 
    lstAuctions.DataBind(); 

}

je suis arrivé dans l'erreur, en réglant le DataSourceID = String.Empty;

Merci pour l'aide, XaiSoft

Répondre

0

Créer un comparateur personnalisé (qui implémente IComparable) comme décrit here et l'utiliser à trier votre collection de façon appropriée. D'autres alternatives sont également listées dans cet article (comme utiliser Linq).

+0

J'ai mis à jour le code ci-dessus pour montrer ce que je vais faire, mais je reçois une erreur . – Xaisoft

0

Vous indiquez que la DataSource de lstAuctions (ListBox) est la ObjectDataSource odsColors, probablement définie sur les propriétés du contrôle (au moment du design). Dans votre code-behind, vous liez le lstAuctions à dv (le DataView). Cela semble expliquer l'erreur: "DataSource et DataSourceID sont définis sur 'lstColors'. Supprimer une définition."Cependant, je ne vois pas le contrôle 'lstColors' identifié dans votre code.Le problème pourrait être causé par quelque chose d'autre sur la page

Questions connexes