problème avec dropdownlist dans un detailsview en mode edit
Le
Luc
Bonjour,
j'ai un detailsview en mode Edit dans lequel il y a un dropdownlist qui est
alimenté dynamiquement (en vb.net).
Le champ de la base de données (sql server) lié au dropdownlist ("myfield")
contient la valeur 1 (smallint).
Le code ci-dessous génère l'erreur suivant:
"selectedvalue n'est pas valide car il n'existe pas dans la liste des
éléments"
Je ne comprend pas car par le code SelectedValue='<%# Bind("myfield") %>',
le selectedvalue reçoit la valeur 1, qui est quand même contenue dans la
liste du dropdownlist (1 à 10).
En mode Insert, il n'y a pas de problème.
Merci de m'aider.
Luc
Voici le code:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:myconn %>"
SelectCommand="SELECT [myfield], [id] FROM [opdr]"
UpdateCommand="UPDATE [opdr] SET [myfield] = @myfield WHERE [id] = @id">
<UpdateParameters>
<asp:Parameter Name="myfield" Type="Int16" />
<asp:Parameter Name="id" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
<asp:DetailsView ID="DetailsView1" runat="server"
DataSourceID="SqlDataSource1" DataKeyNames="id" DefaultMode="Edit"
AutoGenerateRows="False">
<Fields>
<asp:CommandField ShowEditButton="True" />
<asp:TemplateField>
<EditItemTemplate>
<asp:DropDownList ID="mydd" runat="server" SelectedValue='<%#
Bind("myfield") %>'>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="id" InsertVisible="False"
ReadOnly="True" SortExpression="id" />
</Fields>
</asp:DetailsView>
code-behind:
--
Protected Sub DetailsView1_DataBound(ByVal sender As Object, ByVal e As
System.EventArgs) Handles DetailsView1.DataBound
If DetailsView1.CurrentMode = DetailsViewMode.Edit Then
Dim dvr As DetailsViewRow
Dim dd1 As DropDownList
Dim i As Integer
Dim z As ListItem
For Each dvr In DetailsView1.Rows
dd1 = CType(dvr.FindControl("mydd"), DropDownList)
Next
For i = 1 To 10
z = New ListItem(i, i)
dd1.Items.Add(z)
Next
End If
End Sub
j'ai un detailsview en mode Edit dans lequel il y a un dropdownlist qui est
alimenté dynamiquement (en vb.net).
Le champ de la base de données (sql server) lié au dropdownlist ("myfield")
contient la valeur 1 (smallint).
Le code ci-dessous génère l'erreur suivant:
"selectedvalue n'est pas valide car il n'existe pas dans la liste des
éléments"
Je ne comprend pas car par le code SelectedValue='<%# Bind("myfield") %>',
le selectedvalue reçoit la valeur 1, qui est quand même contenue dans la
liste du dropdownlist (1 à 10).
En mode Insert, il n'y a pas de problème.
Merci de m'aider.
Luc
Voici le code:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:myconn %>"
SelectCommand="SELECT [myfield], [id] FROM [opdr]"
UpdateCommand="UPDATE [opdr] SET [myfield] = @myfield WHERE [id] = @id">
<UpdateParameters>
<asp:Parameter Name="myfield" Type="Int16" />
<asp:Parameter Name="id" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
<asp:DetailsView ID="DetailsView1" runat="server"
DataSourceID="SqlDataSource1" DataKeyNames="id" DefaultMode="Edit"
AutoGenerateRows="False">
<Fields>
<asp:CommandField ShowEditButton="True" />
<asp:TemplateField>
<EditItemTemplate>
<asp:DropDownList ID="mydd" runat="server" SelectedValue='<%#
Bind("myfield") %>'>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="id" InsertVisible="False"
ReadOnly="True" SortExpression="id" />
</Fields>
</asp:DetailsView>
code-behind:
--
Protected Sub DetailsView1_DataBound(ByVal sender As Object, ByVal e As
System.EventArgs) Handles DetailsView1.DataBound
If DetailsView1.CurrentMode = DetailsViewMode.Edit Then
Dim dvr As DetailsViewRow
Dim dd1 As DropDownList
Dim i As Integer
Dim z As ListItem
For Each dvr In DetailsView1.Rows
dd1 = CType(dvr.FindControl("mydd"), DropDownList)
Next
For i = 1 To 10
z = New ListItem(i, i)
dd1.Items.Add(z)
Next
End If
End Sub

Poser une question


<asp:DropDownList ID="mydd" runat="server" SelectedValue='<%#
Bind("myfield") %>'>
</asp:DropDownList>
SelectedValue n'existe pas dans les options de DropDownList, si tu veux
sélectionner une valeur dans un DropDownList
En C# car c'est mon outil d'apprentissage.
protected void Page_Load(object sender, EventArgs e)
{
mydd.SelectedValue = myfield;
}
Un truc comme ça. ;-)
Luc vient de nous annoncer :
--
*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org
http://www.developpez.net/forums/f4...t/asp-net/
qu'ici car ce forum n'est pas très animmé.
EmanuelL vient de nous annoncer :
--
*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org
de ddl. Désolé ;-)
Est-ce qu'il ne manquerai pas
EmanuelL a pensé très fort :
--
*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org
"EmanuelL" news: