I have multiple dropdown & listbox in my webpage.
I am trying to get a list of CategoryID
from a lstCatID
listbox i am able to populate the listbox with category name.
If i remember correctly in first attempt my code worked fine, after that i made some change then it stated to always get the first item selected x No. of time
<asp:ListBox ID="lstCatID" runat="server" DataTextField="CategoryName"
DataValueField="CategoryID" SelectionMode="Multiple" CssClass="lstListBox">
</asp:ListBox>
protected void Button1_Click(object sender, EventArgs e)
{
string CatID = string.Empty;
foreach (ListItem li in lstCatID.Items)
{
if (li.Selected == true)
{
// Response.Write();
CatID += lstCatID.SelectedItem.Value + ",";
}
}
Response.Write(CatID);
}
I am not sure what is going wrong i checkd MSDN it show exactly the same way of doing it.
May be i am doing something wrong.
Just to add using firefox i am able to see multiple selected value have selected property.
<option value="3" selected="selected">One</option>
<option value="2">Two</option>
<option value="29" selected="selected">Three</option>
<option value="25" selected="selected">Four</option>
<option value="22" >Five</option>
My output in this case will be 3,3,3
I would appreciate help in this regard
I am not sure what is wrong with the logic i am using.
I came across a nice solution using LINQ.
This single statement works great & gets me the desired results.
RESULT: 3,29,25
Minutes later I found a solution:
This worked fine in my scenario
You are setting it to the same value every time:
When you actually want the value of the item in your loop that is selected:
Get the selected items using linq
Try to add Page.IsPostback on your Page_Load like
Code:
Once i was facing the same problem and i made Postback mistake.
Hope it works.