Ne peut pas avoir plusieurs éléments sélectionnés dans une liste déroulante à l'aide de C#
j'obtiens cette erreur quand j'essaie de sélectionner un élément dans la zone de liste déroulante "Ne peut pas avoir plusieurs éléments sélectionnés dans un DropDownList". Quelqu'un peut s'il vous plaît aider moi je ne sais pas pourquoi je reçois ce. voici mon code:
private void Bind_GridView()
{
this.BindGroupNameList(DropDownList1);
}
private void GetGroupNameList(DropDownList DropDownList1)
{
String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
SqlConnection con2 = new SqlConnection(strConnString);
SqlDataAdapter sda = new SqlDataAdapter();
SqlCommand cmd1 = new SqlCommand("select distinct Name" +
" from MyTable");
cmd1.Connection = con2;
con2.Open();
DropDownList1.DataSource = cmd1.ExecuteReader();
DropDownList1.DataTextField = "Name";
DropDownList1.DataValueField = "Name";
DropDownList1.DataBind();
con2.Close();
DropDownList1.Items.FindByValue(ViewState["MyFilter"].ToString())
.Selected = true;
}
//on item change
protected void NameChanged(object sender, EventArgs e)
{
DropDownList DropDownList1 = (DropDownList)sender;
ViewState["MyFilter"] = DropDownList1.SelectedValue;
this.Bind_GridView();
}
et voici mon dropdownbox en aspx
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="NameChanged"
DataTextField="Name" DataValueField="Name"
AppendDataBoundItems="true">
<asp:ListItem Text="ALL" Value="ALL"></asp:ListItem>
<asp:ListItem Text="Top 10" Value="10"></asp:ListItem>
</asp:DropDownList>
Voici le code pour le chargement de la page:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
ViewState["MyFilter"] = "ALL";
this.Bind_GridView();
}
}
ici est la méthode qui appelle GetGroupNameList:
private void Bind_GridView()
{
DataTable dt = new DataTable();
String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
SqlConnection con = new SqlConnection(strConnString);
SqlDataAdapter sda = new SqlDataAdapter();
SqlCommand cmd = new SqlCommand("sp_filter_Names");
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@MyFilter", ViewState["MyFilter"].ToString());
cmd.Connection = con;
sda.SelectCommand = cmd;
sda.Fill(dt);
GV_Test.DataSource = dt;
GV_Test.DataBind();
GetGroupNameList();
}
il n'existe aucun code dans le page_load si oui, alors pl. post que trop.
Ratina, j'ai ajouté le code pour le chargement de la page. thnx
eh bien il n'y a pas de problème ajouter une ligne dans GetGroupNameList(DropDownList DropDownList1) avant DropDownList1.Éléments.FindByValue(ViewState["MyFilter"].ToString()) .Selected = true; insert--> DropDownList1.selectedIndex=-1;
ajouté mais toujours même problème.
Qui vous a dit que vous pouvez sélectionner plusieurs éléments dans la liste déroulante? DropDownList est une zone de liste déroulante dans laquelle vous ne pouvez sélectionner qu'un seul élément, pour une sélection multiple, vous devez utiliser la zone de liste ou similaire de contrôle. Je suis même surpris de voir que tout le monde est, ce qui suggère une réponse ici.
Ratina, j'ai ajouté le code pour le chargement de la page. thnx
eh bien il n'y a pas de problème ajouter une ligne dans GetGroupNameList(DropDownList DropDownList1) avant DropDownList1.Éléments.FindByValue(ViewState["MyFilter"].ToString()) .Selected = true; insert--> DropDownList1.selectedIndex=-1;
ajouté mais toujours même problème.
Qui vous a dit que vous pouvez sélectionner plusieurs éléments dans la liste déroulante? DropDownList est une zone de liste déroulante dans laquelle vous ne pouvez sélectionner qu'un seul élément, pour une sélection multiple, vous devez utiliser la zone de liste ou similaire de contrôle. Je suis même surpris de voir que tout le monde est, ce qui suggère une réponse ici.
OriginalL'auteur moe | 2013-04-17
Vous devez vous connecter pour publier un commentaire.
Modifier cette ligne:
:
Le problème, c'est que vous avez déjà un élément sélectionné (probablement le premier de la liste) et vous êtes à la recherche de l'autre, l'avez sélectionné. Gardez à l'esprit que le fait d'avoir plusieurs éléments sélectionnés est valable pour
ListBox
etCheckListBox
, mais pas pour unDropDownList
.Faire l'un des
ListItem
sélectionné ne sont pas automatiquement et désélectionnez les autres éléments dans leListItemColletion
.Assurez-vous que vous n'avez pas de deux éléments de même valeur
je n'ai pas de doublons et aussi je reçois des noms distincts à partir de ma table, comme vous pouvez le voir dans mon instruction select
Merci à vous. Été m'énerve pour un couple d'heures maintenant!!
J'allais répondre à cette question de la bounty, mais C'est la bonne réponse. Je ne comprends pas pourquoi il ne fonctionne pas pour vous. Le problème est que vous ne pouvez pas définir des valeurs dans les propriétés des éléments dans la zone de liste après vous databind. Pensez-y de cette façon... après c'est lié, la zone de liste est PROPRIÉTAIRE de ces éléments, et vous devez aller à travers la zone de liste pour modifier l'élément sélectionné. Je peux expliquer ce qui se passe derrière les coulisses, mais depuis il y a déjà une bonne réponse ici, je ne suis pas sûr de la valeur de le faire. Vous jettent des événements que vous ne pouvez pas penser, en fait.
OriginalL'auteur Adrian Carneiro
C'est assez simple, vraiment, comme Adrian mentionné cette erreur se produit lorsque vous avez un élément dans la liste déroulante, puis ailleurs dans votre code vous sélectionnez un autre élément.
Pour résoudre le problème de mettre un frein point sur
GetGroupNameList
et si l'erreur est levée à cette ligne:Placez la ligne suivante de code ci-dessus juste au-dessus:
Si cette ligne ne renvoie pas d'erreur, cela signifie que le deuxième sélection se fait après la
GetGroupNameList
appel de méthode, dans ce cas, la placeDropDownList1.ClearSelection();
tout de suite après l'appel àGetGroupNameList
D'où appelez-vous GetGroupNameList?
je l'appelle dans la Bind_GridView méthode. Je viens de mettre à jour mon post initial et a ajouté l'Bind_GridView méthode. Pls. voir ci-dessus. merci
j'ai toujours le problème quelqu'un peut s'il vous plaît aider?
zip de votre projet et de le poster sur Google drive et de partager le lien avec moi,je vais jeter un oeil
OriginalL'auteur Denys Wessels
Assurez-vous que vous n'êtes pas la liaison de données de plusieurs ddls à la même source de données. Être sélectionné est un attribut d'un élément, par conséquent, si différents les ddls de sélectionner les différents éléments à partir de la même source de données, chacun des ddls se termine avec plusieurs éléments à la fois, ce qui est probablement ce qui se passe ici..
OriginalL'auteur Pranali Desai
Vous pourriez essayer:
Avant la ligne:
OriginalL'auteur Full Time Skeleton
Je vous suggère de ne pas ajouter des valeurs par défaut de DropDownList de aspx et effacer tous les éléments avant de lier les données.
et changement GetGroupNameList méthode que ci-dessous
OriginalL'auteur Damith