2016-01-06 1 views
-1

J'ai un problème avec un contrôle DropDownList connecté à une source de données. Je veux obtenir l'index sélectionné lorsque je modifie le formulaire complet, mais chaque fois que j'essaie d'éditer, je reçois le premier index de la table ... alors que l'index choisi est différent .. J'ai essayé d'utiliser les paramètres de sélection, mais il ne fonctionne pas non plus! Voici mon code.DropDownList datasource asp.net vb

<asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="DDListDataSource" DataTextField="GradeGroupName" DataValueField="GradeGroupName" Height="18px" Width="164px" > 
</asp:DropDownList> 
<asp:SqlDataSource ID="DDListDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:Dev201601ConnectionString %>" 
    InsertCommand="INSERT INTO GradeGroups(GradeGroup) VALUES (@GradeGroup)" 
    SelectCommand="SELECT GradeGroupName FROM GradeGroups" 
    UpdateCommand="UPDATE GradeGroups SET GradeGroupName = @GradeGroup, GradeGroup = @GradeGroup WHERE (GradeGroup = @Original_GradeGroup)"> 
    <InsertParameters> 
     <asp:Parameter Name="GradeGroup"></asp:Parameter> 
    </InsertParameters> 
    <SelectParameters> 
      <asp:ControlParameter ControlID="DropDownList1" Name="GradeGroupName" PropertyName="SelectedValue" Type="String" /> 
    </SelectParameters> 
    <InsertParameters> 
     <asp:Parameter Name="GradeGroupName" /> 
     <asp:Parameter Name="GradeGroup" /> 
    </InsertParameters> 
    <UpdateParameters> 
     <asp:Parameter Name="GradeGroup" /> 
     <asp:Parameter Name="Original_GradeGroup" /> 
    </UpdateParameters> 
</asp:SqlDataSource> 
+0

essayez d'ajouter AutoPostBack = "false" à votre contrôle dropdownlist – Khazratbek

+0

Et j'ai une autre question: pourquoi utilisez-vous InsertParameters deux fois? – Khazratbek

Répondre

0

J'aime générer dropdownlist dans un code-behind:

page Conception:

<asp:DropDownList ID="ddlItems" runat="server" /> 

code-behind en C#:

SqlConnection con = new SqlConnection(conStr); 
SqlCommand cmd = new SqlCommand("select * from table_name", con); 

try 
{ 
    con.Open(); 
    SqlDataAdapter sda = new SqlDataAdapter(cmd); 
    DataSet ds = new DataSet(); 
    sda.Fill(ds); 
    ddlItems.DataSource = ds; 
    ddlItems.DataTextField = "Name"; 
    ddlItems.DataValueField = "ID"; 
    ddlItems.DataBind(); 
} 
catch (Exception ex) 
{ 
    //... 
} 
finally 
{ 
    con.Close(); 
} 

code-behind en VB. NET:

Dim con As New SqlClient.SqlConnection(conStr) 
Dim cmd As New SqlClient.SqlCommand("SELECT * FROM Table_Name", con) 

Try 
    con.Open() 
    Dim sda As New SqlDataAdapter(cmd) 
    Dim ds As New DataSet() 
    sda.Fill(ds) 
    ddlItems.DataSource = ds 
    ddlItems.DataTextField = "Name" 
    ddlItems.DataValueField = "ID" 
    ddlItems.DataBind() 
    con.Close() 
Catch ex As Exception 
    '.... 
End Try 
+0

Je préfère de cette façon, parce que vous pouvez manipuler avec tout ce dont vous avez besoin – Khazratbek

+0

Eh bien, c'est une meilleure idée Merci :) –

+0

@BishoyFrank vous êtes les bienvenus. J'espère que cela aide – Khazratbek