如何使用文本框获取复选框列表的数据

时间:2014-02-01 18:11:31

标签: c# asp.net

我尝试从checkboxbox中获取与ckeckboxex相关的数据。 为了计算所选框的值

这是我的代码:

foreach (ListItem item in listOthers.Items)
{
    if (item.Selected)
    {
        sum += Convert.ToInt32(TextBox1.Text);//textbox of selected checkbox
    }
}
lblSum.Text = sum.ToString();

要获取与复选框相关的文本框值,我需要做什么?

1 个答案:

答案 0 :(得分:0)

根据您的评论,您有一个固定大小为10个项目的CheckBoxList以及10个文本框(名为TextBox1,TextBox2等)。用户标记一些CheckBox并将文本输入到相应的Textbox中。您希望将文本框的文本转换为整数并计算标记条目的总和。
您需要通过调用FindControl来动态访问文本框:

var index = 0;
foreach (ListItem item in listOthers.Items)
{
    index++; // Increase here as the Textbox numbers start at 1
    if (item.Selected)
    {
        var txt = FindControl("TextBox" + index.ToString()) as TextBox;
        if (txt != null)
            sum += Convert.ToInt32(txt.Text);  //text of selected Checkbox
    }
}
lblSum.Text = sum.ToString();

请注意,在Textboxes的容器上调用FindControl非常重要。如果文本框直接位于页面上,则示例中的调用将起作用。如果它们位于名为Panel1的Panel上,则必须调用:

var txt = Panel1.Findcontrol("TextBox" + index.ToString()) as Textbox;

使用CheckBoxList替代使用CheckBoxList,该CheckBoxList是为设计的可变大小而准备的,并且旁边有10个TextBox的固定列表,它将在ItemTemplate中创建一个带CheckBox和TextBox的Repeater。缩小规模是你必须为DataBinding创建一些DTO,并且还必须使用一些更动态的控制分辨率(对于CheckBox和TextBox)。