我尝试从checkboxbox中获取与ckeckboxex相关的数据。 为了计算所选框的值
这是我的代码:
foreach (ListItem item in listOthers.Items)
{
if (item.Selected)
{
sum += Convert.ToInt32(TextBox1.Text);//textbox of selected checkbox
}
}
lblSum.Text = sum.ToString();
要获取与复选框相关的文本框值,我需要做什么?
答案 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)。