C# asp.Net复选框没有值?

C# asp.Net复选框没有值?,c#,asp.net,C#,Asp.net,已解决:如何从数据列表中的复选框中获取值?复选框没有值 <asp:DataList ID='dlTest' runat='server' RepeatColumns='2'> <ItemTemplate> <asp:HiddenField ID='cbTestID' runat='server' value='<%# Eval("id") %>' /> <asp:C

已解决:如何从数据列表中的复选框中获取值?复选框没有值

<asp:DataList
     ID='dlTest'
     runat='server'
     RepeatColumns='2'>

     <ItemTemplate>
         <asp:HiddenField ID='cbTestID' runat='server' value='<%# Eval("id") %>' />
         <asp:CheckBox ID='cbTest' runat='server' /> <%# Eval("name") %><br />
     </ItemTemplate>

// CODE BEHIND

foreach (DataListItem cb in dlTest.Items) {
    CheckBox chk = (CheckBox)cb.FindControl("cbTest");
    HiddenField hf = (HiddenField)cb.FindControl("cbTestID");
    if(chk.Checked)
    {
        Response.Write(hf.Value);
    }


//代码隐藏 foreach(dlTest.Items中的DataListItem cb){ 复选框chk=(复选框)cb.FindControl(“cbTest”); HiddenField hf=(HiddenField)cb.FindControl(“cbTestID”); 如果(已检查) { 响应写入(hf值); }
您没有复选框的值,因为它只是一个项目,这意味着它可以是真的,也可以是假的,您可以这样检查它

      if(myCheckBox.Selected)
      { do this.. or even fire an event when it changed. 
         or assign some number to some datatype.. }
另一方面,CheckBoxList的值与任何其他列表一样,您可以通过

      CheckBoxList1.SelectedValue
或者你可以用checkboxlist做以下两件事

                   CheckBoxList1.SelectedIndex
                   CheckBoxList1.SelectedItem

尝试使用文本复选框属性/属性而不是值

<asp:CheckBox ID="cbTest" runat="server" Text="Text from Checkbox"/>

protected void Button1_Click(object sender, EventArgs e)
{
    Label1.Text = cbTest.Text;
}

有关CheckBoxList(使用文本属性/属性)的实现,请参阅此

或者,如果确实要使用复选框的Value属性,请选中此项


HTH.

有没有具体问题,或者你只是在抱怨?@MichaelC.Gates:它在FAQ中特别说明避免粗鲁。它还建议提出建设性的问题。我们可以理解你的沮丧,但抱怨不会得到任何有用的答案。我不确定我明白。我正在寻找一个答案,不是o从复选框中传递值,而不是简单地传递文本。这应该是非常有建设性的。我已经在复选框中使用这种技术13年了,其他程序员也一直在使用这种技术。请重新阅读这篇文章,如果你不能回答,没问题。也许其他人可以。然后尝试从问题中消除情绪,然后再次提问。我不能ried,但“文本”在复选框旁边显示为标签。我不希望它显示为标签。@Michael啊,好的。查看我编辑的答案。谢谢。我让它处理复选框列表,它返回了值(我的ID字段)然而,当我循环浏览ListItems时,我不能像我所希望的那样自定义复选框列表。因此求助于DataList…它现在没有值,只有checked/unchecked/text。这对我尝试做的事情没有用处。似乎复选框只对文本有用。但是ID呢?如果我可以隐藏文本,那就好了。但我没有我不认为这是一个选项。如果我理解正确,您宁愿使用ID作为“值”,因为您不希望在复选框旁边有标签。我找到了这篇关于如何获取复选框ID的文章(尽管示例使用了重复器而不是数据列表):.HTH.复选框列表功能良好,但是,您无法自定义它。我需要自定义复选框旁边的文本,而不是标签,而是图像、文本、链接等。例如,如果要将任务与员工关联,则复选框中会有文本(任务文本)和一个值。仅仅因为它被选中了,并不意味着我知道被选中了什么。我不能依赖字段旁边的文本。我理解你说的,但它不起作用。而且我不相信我可以将复选框列表与数据项或中继器一起使用,可以吗?@MichaelC.Gates:使用
中继器
可能是一个选项。然后你可以构建你自己r通过将自定义域对象绑定到自己的模板并构建复选框列表,而不是使用固定的
复选框列表
对内容进行黑客攻击。有时,DIY比尝试自定义现有控件更容易。