C# ASP.NET中的复选框

C# ASP.NET中的复选框,c#,asp.net,C#,Asp.net,我有3个食品名称复选框,如面条、比萨饼、可乐。如果选择了其中任何一个,如何在标签框中显示 Food:<asp:CheckBox ID="CheckBox1" runat="server" Text="Noodles" /> <asp:CheckBox ID="CheckBox2" runat="server" Text="Pizza" /> <asp:CheckBox ID="CheckBox3" runat="server" Tex

我有3个食品名称复选框,如面条、比萨饼、可乐。如果选择了其中任何一个,如何在标签框中显示

  Food:<asp:CheckBox ID="CheckBox1" runat="server" Text="Noodles" />
       <asp:CheckBox ID="CheckBox2" runat="server" Text="Pizza" />
       <asp:CheckBox ID="CheckBox3" runat="server" Text="Coke" />
       <br />
       <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
       <br />
       <asp:Button ID="Button1" runat="server" Text="Button" onClick="Button1_Click" />
食物:



因此,当我检查面条和比萨饼时,标签1应同时显示这两个项目。

在aspx文件中进行如下更改

Food:<asp:CheckBox ID="CheckBox1" runat="server" Text="Noodles" OnCheckedChanged="CheckBox_CheckedChanged" AutoPostBack="true" />
   <asp:CheckBox ID="CheckBox2" runat="server" Text="Pizza"  OnCheckedChanged="CheckBox_CheckedChanged" AutoPostBack="true"/>
   <asp:CheckBox ID="CheckBox3" runat="server" Text="Coke"  OnCheckedChanged="CheckBox_CheckedChanged" AutoPostBack="true"/>
   <br />
   <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
   <br />
   <asp:Button ID="Button1" runat="server" Text="Button" onClick="Button1_Click" />
食物:


在代码隐藏(aspx.cs)文件中

protectedvoid复选框\u CheckedChanged(对象发送方,事件参数e)
{
List foodCheckBoxList=新列表();
添加(复选框1);
添加(复选框2);
添加(复选框3);
其中(x=>x.Checked)。选择(x=>x.Text);
Label1.Text=string.Join(“,”,foodCheckBoxList.Where(x=>x.Checked)。选择(x=>x.Text));
}
此代码将在每个复选框选择的标签中添加文本

如果需要单击按钮,请将上述代码移动到按钮单击事件中,并从aspx网页的每个复选框中删除autopostback属性和CheckBox_CheckedChanged事件


希望这有帮助

在aspx文件中进行如下更改

Food:<asp:CheckBox ID="CheckBox1" runat="server" Text="Noodles" OnCheckedChanged="CheckBox_CheckedChanged" AutoPostBack="true" />
   <asp:CheckBox ID="CheckBox2" runat="server" Text="Pizza"  OnCheckedChanged="CheckBox_CheckedChanged" AutoPostBack="true"/>
   <asp:CheckBox ID="CheckBox3" runat="server" Text="Coke"  OnCheckedChanged="CheckBox_CheckedChanged" AutoPostBack="true"/>
   <br />
   <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
   <br />
   <asp:Button ID="Button1" runat="server" Text="Button" onClick="Button1_Click" />
食物:


在代码隐藏(aspx.cs)文件中

protectedvoid复选框\u CheckedChanged(对象发送方,事件参数e)
{
List foodCheckBoxList=新列表();
添加(复选框1);
添加(复选框2);
添加(复选框3);
其中(x=>x.Checked)。选择(x=>x.Text);
Label1.Text=string.Join(“,”,foodCheckBoxList.Where(x=>x.Checked)。选择(x=>x.Text));
}
此代码将在每个复选框选择的标签中添加文本

如果需要单击按钮,请将上述代码移动到按钮单击事件中,并从aspx网页的每个复选框中删除autopostback属性和CheckBox_CheckedChanged事件


希望这有帮助

复选框列表
收集控件非常适合您的情况,但既然您说您不能这样做,您可以通过如下方式循环通过控件轻松实现这一点:-

protected void Button1_Click(object sender, EventArgs e)
{
   List<string> selectedFood = new List<string>();
   foreach (Control ctrl in form1.Controls)
   {
       if (ctrl is CheckBox)
       {
           CheckBox chkBox = ctrl as CheckBox;
           if (chkBox.Checked)
           {
                selectedFood.Add(chkBox.Text);
           }
       }
   }
   Label1.Text = String.Join(",", selectedFood);
}
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
List selectedFood=新列表();
foreach(form1.Controls中的控件ctrl)
{
如果(ctrl为复选框)
{
复选框chkBox=ctrl作为复选框;
如果(chkBox.Checked)
{
选择食品。添加(chkBox.Text);
}
}
}
Label1.Text=String.Join(“,”,selectedFood);
}
或者,也可以使用Linq:-

var selectedFood = form1.Controls.OfType<CheckBox>()
                        .Where(x => x.Checked)
                        .Select(x => x.Text); 

Label1.Text = String.Join(",", selectedFood);
var selectedFood=form1.Controls.OfType()
.其中(x=>x.Checked)
.选择(x=>x.Text);
Label1.Text=String.Join(“,”,selectedFood);

复选框列表
收集控件非常适合您的情况,但既然您说您不能这样做,您可以通过如下方式循环通过控件轻松实现这一点:-

protected void Button1_Click(object sender, EventArgs e)
{
   List<string> selectedFood = new List<string>();
   foreach (Control ctrl in form1.Controls)
   {
       if (ctrl is CheckBox)
       {
           CheckBox chkBox = ctrl as CheckBox;
           if (chkBox.Checked)
           {
                selectedFood.Add(chkBox.Text);
           }
       }
   }
   Label1.Text = String.Join(",", selectedFood);
}
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
List selectedFood=新列表();
foreach(form1.Controls中的控件ctrl)
{
如果(ctrl为复选框)
{
复选框chkBox=ctrl作为复选框;
如果(chkBox.Checked)
{
选择食品。添加(chkBox.Text);
}
}
}
Label1.Text=String.Join(“,”,selectedFood);
}
或者,也可以使用Linq:-

var selectedFood = form1.Controls.OfType<CheckBox>()
                        .Where(x => x.Checked)
                        .Select(x => x.Text); 

Label1.Text = String.Join(",", selectedFood);
var selectedFood=form1.Controls.OfType()
.其中(x=>x.Checked)
.选择(x=>x.Text);
Label1.Text=String.Join(“,”,selectedFood);

请发布您的代码,显示您迄今为止所做的努力。运行代码时会收到哪些错误消息?你尝试了什么?你在哪里卡住了?现在的问题是,您只是要求我们为您编写代码,而事实并非如此。是的,我尝试过像以下字符串一样使用checkeditem=string.Format(“{0},{1},{2}”,CheckBox1.Checked,CheckBox2.Checked,CheckBox3.Checked”);这给了我是真是假,但不是文本。我认为最好使用复选框列表。按照你的方式,你必须首先检查每一个是否被选中:)如果(checkbox1.checked)label1.text=checkbox1.text;复选框列表我可以得到结果,但我的要求是使用单独的复选框并得到结果。请发布您的代码,显示您迄今为止的努力。运行代码时会收到哪些错误消息?你尝试了什么?你在哪里卡住了?现在的问题是,您只是要求我们为您编写代码,而事实并非如此。是的,我尝试过像以下字符串一样使用checkeditem=string.Format(“{0},{1},{2}”,CheckBox1.Checked,CheckBox2.Checked,CheckBox3.Checked”);这给了我是真是假,但不是文本。我认为最好使用复选框列表。按照你的方式,你必须首先检查每一个是否被选中:)如果(checkbox1.checked)label1.text=checkbox1.text;复选框列表我可以得到结果,但我的要求是使用单独的复选框并得到结果。有一个复选框列表,循环检查复选框并生成字符串不是更干净吗?如果你只有3-4个左右的Ifs,那么Ifs就可以工作了,但是如果你的Ifs数量增加了一点,那么复制的代码就会少很多。当然,即使是neater也会自动通过复选框,但我对ASP不太在行,所以不确定它到底是如何工作的,或者是否有任何明显的陷阱……List foodCheckBoxList=new List();添加(复选框1);添加(复选框2);添加(复选框3);其中(x=>x.Checked)。选择(x=>x.Text);Label1.Text=string.Join(“,”,foodCheckBoxList.Where(x=>x.Checked)。选择(x=>x.Text));你是说像这样吗?谢谢你的回答你可以用收藏的首字母I