How to select the listbox using querystring in c#
I am using c#.
I am trying to select the listbox values from the data coming in querystring. Below is code.
if (!string.开发者_运维问答IsNullOrEmpty(Security.GetString(Page.Request.Params["VT"])))
{
string[] strCntVisit = Security.GetString(Page.Request.Params["VT"]).Split(',');
foreach (string i in strCntVisit)
{
lstContriesVisited1.SelectedValue = i;
}
}
my problem is that the above code is traversing perfectly, however the issue is that in my listbox my last value of (i) is selected not all the values in querystring.
Please suggest.
If your ListBox
has its SelectionMode property set to Multiple
, you can do:
string vtParam = Security.GetString(Page.Request.Params["VT"]);
if (!String.IsNullOrEmpty(vtParam)) {
string[] strCntVisit = vtParam.Split(',');
foreach (string i in strCntVisit) {
ListItem item = lstContriesVisited1.Items.FindByValue(i);
if (item != null) {
item.Selected = true;
}
}
}
EDIT: The following should answer your comment:
foreach(ListItem item in lstContriesVisited1.Items) {
lstContriesVisited2.Items.Add(item);
}
lstContriesVisited1.Items.Clear();
SelectedValue is a single item only. Assuming you're using an ASP.NET ListControl, try setting the Selected property on items that match your criteria.
List<string> validItems = new List<string>(strCntVisit);
foreach (ListItem i in lstContriesVisited1.Items) {
if (validItems.Contains(i.Text)) {
i.Selected = true;
}
}
string vt = Security.GetString(Page.Request.Params["VT"]);
if (!string.IsNullOrEmpty(vt))
{
string[] valuesToSelect = vt.Split(',');
foreach (ListItem li in lstContriesVisited1.Items)
{
li.Selected = Array.Contains(valuesToSelect, li.Value);
}
}
(If the VT
parameter could potentially contain a lot of values then it might be quicker to change valuesToSelect
from an array to a HashSet<T>
.)
精彩评论