如何在c#中绑定一个逗号分隔的字符串到列表框

本文关键字:分隔 字符串 列表 一个 绑定 | 更新日期: 2023-09-27 18:03:32

如何将逗号分隔的字符串(如:monday,tuesday)绑定到列表框控件,因为当列表框已经填充时,这些项目正在被选中?周日周一周二周三周四星期五周六

我以以下代码开始:

string days = null;
List<string> lstdays = new List<string>();
//I get the values from a table such as:
foreach (DataRow dr in dt.Rows) {
//other items
days = dr(7).ToString();
}

if (days.Contains(",")) {
//days =  Tuesday,Thursday
}
else
{
  //days = Monday
 lstbxDays.SelectedValue = days;  //means there is a single day
}

如何在c#中绑定一个逗号分隔的字符串到列表框

您可以对字符串使用Split()方法:

string[] newDays=days.Split(',');
foreach (string d in newDays)
{
 lstDays.Add(d);  //add single day to days List
}

如果您还定义了listBox,例如listbox1,您可以说:

listbox1.DataSource=lstDays;

如果你将日期绑定到列表框,那么在用户选择日期的事件中(我不知道你是如何在程序中设置的,通过按钮,网格等),你可以设置:

listbox1.SelectedValue = day; //where day is the var user selects

如果你从DataTable中获得数据,那么像

void BindDayList( ListBox lb , DataTable dt , string textColumnName , string valueColumnName )
{
  lb.DataSource     = dt              ;
  lb.DataTextField  = textColumnName  ;
  lb.DataValueField = valueColumnName ;
  lb.DataBind()     ;
  return ;
}

如果你有一个平坦的字符串,那么下面的东西可能会工作:

void BindDayList( ListBox lb , string listOfDays )
{
  int i = 0 ;
  lb.DataSource = days
                  .Split(',')
                  .Select( x => new ListItem( (++i).ToString() , x.Trim() ) )
                  ;
  lb.DataBind() ;
  return ;
}

你可以这样做

lstbxDays.DataSource = days.Split(','); 

考虑days是逗号分隔的字符串
希望这对你有帮助!

感谢大家提供的示例帮助-使它能够使用此代码选择多个天:

//days = tuesday,thursday
string[] s = days.Split(new char[] { ',' });
foreach (string lst in s)
{
 lstbxDays.Items.FindByText(lst.ToString()).Selected = true;
}