我有一个页面,我可以动态创建2个复选框。
TableRow tr = new TableRow();
for (int i = 0; i < 2; i++)
{
TableCell Tc = new TableCell();
Tc.Attributes["style"] = "line-height: 30px; text-align: left";
Tc.Attributes["width"] = "50%";
Tc.Style.Add("padding-left", "5px");
//Checkboxes on left along with labels
CheckBox checkBoxCtrl = new CheckBox();
checkBoxCtrl.ID = "checkBoxCtrl" + i;
Tc.Controls.Add(checkBoxCtrl);
tr.Cells.Add(Tc);
}
在页面加载事件中创建它们后,我有一个Ok_button点击事件,需要检查是否选中了复选框。
protected void Update2_Click(object sender, EventArgs e)
{
if(checkBoxCtrl.checked)
//here i wont be able to get the value
// i get the error the name checkBoxCtrl does not exist..
{
response.write("true");
}
}
但在这种情况下如何进行检查。
感谢
答案:
这是获取复选框值
所需要做的事情 protected void Update1_Click(object sender, EventArgs e)
{
for(int i = 0; i < ControlPropList.Count; i++)
{
CheckBox chkTest = (CheckBox)xxx.FindControl("checkBoxCtrl" + i);
{
if (chkTest.Checked)
{
Global.logger.Info("Checkbox True = " + chkTest.ID);
}
else
{
Global.logger.Info("Checkbox False = " + chkTest.ID);
}
}
}
}
答案 0 :(得分:1)
只要您在Page_PreInit方法中向页面添加复选框,这应该可以正常工作。如果在此之后添加它们(例如,Page_Load),则不会保留它们的值。
在这里阅读asp.net页面生命周期:
答案 1 :(得分:1)
考虑将动态复选框存储在本地成员中:
private CheckBox _myCustomCheckbox = new CheckBox();
protected override void OnInit(EventArgs e)
{
TableRow tr = new TableRow();
for (int i = 0; i < 2; i++)
{
TableCell Tc = new TableCell();
if (i == 0)
{
Tc.Attributes["style"] = "line-height: 30px; text-align: left";
Tc.Attributes["width"] = "50%";
Tc.Style.Add("padding-left", "5px");
//Checkboxes on left along with labels
_myCustomCheckbox.ID = "checkBoxCtrl" + j;
Tc.Controls.Add(_myCustomCheckbox);
tr.Cells.Add(Tc);
}
}
// the row needs added to a page control so that the child control states can be loaded
SomeTableOnThePage.Controls.Add(tr);
base.OnInit(e);
}
protected void Update2_Click(object sender, EventArgs e)
{
if(_myCustomCheckbox.Checked)
{
response.write("true");
}
}
答案 2 :(得分:0)
可能不是你想要的,但我有一个类似的问题,我在ASP.NET页面中有一个动态生成的表,在一列中动态生成CheckBoxes。我已经从集合中创建了表的数据,然后在创建动态CB时,我给它们一个ID并将它们存储在第二个集合中,例如CB的数组。
因此,当我需要找到Checked值时,我只需遍历该集合,我就可以找到已经检查过的那些。
同样,当它们与动态表格中的数据同时创建时,我能够轻松地将表格数据行与Checkbox值绑定。
这显然假设动态表和CB是使用某种循环创建的。
这可能不是最佳解决方案,但可以满足我当前的需求。