【问题标题】:Dynamic Table CheckBoxes not having a "Checked" true value没有“已检查”真值的动态表复选框
【发布时间】:2013-04-27 08:56:18
【问题描述】:

我一直在使用 ASP.NET 开发一个 Web 应用程序,其代码库为 C#。我有一个动态表,它根据 SQL 查询的返回调整大小;在每行的第三个单元格中添加了一个复选框。根据索引和日期为复选框分配一个 ID。

当用户点击提交按钮时,代码应该从被检查的每一行中获取一个值。但是,在遍历行时,没有一个复选框的 Checked 属性值为 true。 ID 仍然存在,但复选框的值似乎丢失了。

添加复选框的代码:

cell = new TableCell();  
CheckBox cb = new CheckBox();  
cell.ApplyStyle(TS);  
cb.ID = index.ToString() + " " +  lstDate.SelectedItem.Text.ToString();  

if (reader["RestartStatus"].ToString() == "0")  
{  
     cb.Checked = false;  
     cb.Enabled = true;  
}  
else  
{  
     cb.Checked = true;  
}  
cell.Controls.Add(cb);  

获取复选框值的代码:

for (int i = 0; i < CompTable.Rows.Count; i++)  
{  
    int t3 = CompTable.Rows[i].Cells[2].Controls.Count;  
    Control temp = null;  
    if (t3 > 0)  
    {  
        temp = CompTable.Rows[i].Cells[2].Controls[0];  
    }  

    string t2 = i.ToString() + " " + lstDate.SelectedItem.Text.ToString();  
    if ( temp != null && ((CheckBox)temp).ID == i.ToString() + " " +   lstDate.SelectedItem.Text.ToString())  
    {  
        //Separated into 2 if statements for debugging purposes  
        //ID is correct, but .Checked is always false (even if all of the   boxes are checked)  
        if (((CheckBox)temp).Checked == true)  
        {  
            tlist.Add(CompTable.Rows[i].Cells[0].Text.ToString());  
        }  
    }  
}

【问题讨论】:

标签: c# asp.net .net checkbox


【解决方案1】:

动态控件没有值的最可能原因是它们要么是在加载 ViewState 之后创建的,要么是在之前读取的。

一般来说,动态控件应该在PageInit事件期间创建,在PageLoad事件期间或之后读取。

【讨论】:

    猜你喜欢
    • 2013-04-13
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多