Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

problème avec dropdownlist dans un detailsview en mode edit

4 réponses
Avatar
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

4 réponses

Avatar
EmanuelL
Bonjour Luc,

<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 :
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



--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org
Avatar
EmanuelL
Tu as meilleur temps de poser tes questions dur
http://www.developpez.net/forums/f493/dotnet/visual-basic-net/asp-net/
qu'ici car ce forum n'est pas très animmé.

EmanuelL vient de nous annoncer :
Bonjour Luc,

<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 :
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





--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org
Avatar
EmanuelL
Oups! J'avais répondu trop vite, SelectedValue existe bien comme option
de ddl. Désolé ;-)

SelectCommand="SELECT [myfield], [id] FROM [opdr]"




Est-ce qu'il ne manquerai pas

EmanuelL a pensé très fort :
Bonjour Luc,

<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 :
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





--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org
Avatar
Luc
ok merci
"EmanuelL" schreef in bericht
news:
Oups! J'avais répondu trop vite, SelectedValue existe bien comme option de
ddl. Désolé ;-)

SelectCommand="SELECT [myfield], [id] FROM [opdr]"




Est-ce qu'il ne manquerai pas

EmanuelL a pensé très fort :
Bonjour Luc,

<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 :
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





--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org