获取单个字符串的复选框列表值

时间:2014-09-06 08:07:54

标签: c# asp.net string checkboxlist

我试图将复选框列表值设为单个字符串。在ASP.net中使用C#。

这是我的代码.. 我已在全球宣布这一点。

   string hobbies = "";

这是将所选项目添加到字符串的代码。

   protected void chkListHobbies_SelectedIndexChanged(object sender, EventArgs e)
   {
      for (int i=0;i<chkListHobbies.Items.Count;i++)
      {
         if (chkListHobbies.Items[i].Selected)
         {                
            hobbies += chkListHobbies.Items[i].Value + ",";
          }

    }
   hobbies = hobbies.TrimEnd(',');

我点击按钮

显示此内容
     protected void btnEnter_Click(object sender, EventArgs e)
     {
      Response.Write("Hobbies= "+hobbies);
     }

它没有给出预期的输出。 如果它错了或想知道如何正确地做到这一点,我想纠正这个问题。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

你必须在你的btnEnter_Click事件处理程序中创建爱好列表,因为Asp.net webforms in stateless,你会在每次回发后获得一个新的爱好变量。要解决这个问题,你必须以某种方式保存爱好状态(使用viewstate或隐藏字段)并稍后使用它或者我建议在btnEnter_Click中创建爱好列表。

编辑(示例):

1.在btnEnter_Click中完成所有事情:

protected void btnEnter_Click(object sender, EventArgs e)
   {
      string hobbies = "";
      for (int i=0;i<chkListHobbies.Items.Count;i++)
      {
         if (chkListHobbies.Items[i].Selected)
         {                
            hobbies += chkListHobbies.Items[i].Value + ",";
          }

    }
   hobbies = hobbies.TrimEnd(',');
   Response.Write("Hobbies=" + hobbies);

2.使用ViewState:

private string hobbies
{
   get { return (ViewState["hobbies"] ?? "").ToString(); }
   set { ViewState["hobbies"] = value; }
}

并且其余代码完全相同。