我试图将复选框列表值设为单个字符串。在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);
}
它没有给出预期的输出。 如果它错了或想知道如何正确地做到这一点,我想纠正这个问题。 提前谢谢。
答案 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; }
}
并且其余代码完全相同。