I am using Listbox in asp.net to select multiple option but it is not working for multiple selection for "program". Only first value among that is selected is being inserted into database. Code behind is .aspx.cs. Below is part of my code for multiple option selection and insertion. I am using multiple selection for "program":
Solution: Updated code behind and it worked.
.aspx page:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:TestConnectionString %>"
DeleteCommand="DELETE FROM [Database_table] WHERE [ID] = @ID"
InsertCommand="INSERT INTO [Database_table] ([FirstName], [LastName], [address],[program] VALUES (@FirstName, @LastName, @address, @program)"
SelectCommand="SELECT * FROM [Database_table]">
<DeleteParameters>
<asp:Parameter Name="ID" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="FirstName" Type="String" />
<asp:Parameter Name="LastName" Type="String" />
<asp:Parameter Name="address" Type="String" />
<asp:Parameter Name="program" Type="String" />
</InsertParameters>
</asp:SqlDataSource>
<asp:ListBox id="program" rows="10" SelectionMode="Multiple" runat="server">
<asp:ListItem selected="true"></asp:ListItem>
<asp:ListItem>Option A</asp:ListItem>
<asp:ListItem>Option B</asp:ListItem>
<asp:ListItem>Option C</asp:ListItem>
<asp:ListItem>Option D</asp:ListItem>
<asp:ListItem>Option E</asp:ListItem>
<asp:ListItem>Option F</asp:ListItem>
<asp:ListItem>Option G</asp:ListItem>
<asp:ListItem>Option H</asp:ListItem>
<asp:ListItem>Option I</asp:ListItem>
</asp:ListBox>
Updated Code Behind .aspx.cs:
if (error_type == "")
{
SqlDataSource1.InsertParameters["FirstName"].DefaultValue = FirstName.Text;
SqlDataSource1.InsertParameters["LastName"].DefaultValue = LastName.Text;
SqlDataSource1.InsertParameters["address"].DefaultValue = address.Text;
string items = string.Empty;
string items_updated = string.Empty;
foreach (ListItem item in program.Items)
{
if (item.Selected)
{
items += item.Text + ",";
}
}
if (!string.IsNullOrEmpty(items))
{
items_updated = items.Remove(items.LastIndexOf(","));
}
SqlDataSource1.InsertParameters["program"].DefaultValue = items_updated;
SqlDataSource1.InsertParameters["program"].DefaultValue = program.SelectedItem.Text;
SqlDataSource1.Insert();
Response.Redirect("http://www.example.org/Success.aspx", false);
}
else
{
Response.Redirect("http://www.example.org/Failure.aspx", false);
}
For program I also tried like below which didn't work for selecting multiple options:
SqlDataSource1.InsertParameters["program"].DefaultValue = program.Text;
Can you please suggest if I am missing something here?