在填充了复选框列表(以及复选框的子列表)之后,我如何在代码隐藏中检查它们?c#

本文关键字:列表 复选框 隐藏 代码 检查 之后 填充 | 更新日期: 2023-09-27 18:18:20

首先,这里是代码。

DataRow[] exemption = ds.Tables[2].Select("ValidExemptionTypeID='2'");
    foreach (DataRow dr in exemption)
    {
        string exemptionType = dr["ValidExemptionTypeID"].ToString();
        string exemptionID = dr["ValidExemptionID"].ToString();
        string exemptionDesc = dr["validExemptionDescription"].ToString();
        string displayLabel = dr["DisplayLabel"].ToString();
        sb.Append("<table><tr><td colspan='3'>&nbsp<br /></td></tr></table>");
        sb.Append("<table align='center' width='730px'>");
        sb.Append("<tr><td width='20px' align='left'><input type='"checkbox'" ID='"chk" + exemptionID + "'" runat='"server'" /></td>");
        sb.Append("<td align='left'><strong>" + exemptionDesc + "</strong></td>");
        sb.Append("</table>");
        sb.Append("<table align='center' width='630px'>");
        sb.Append("<tr><td>" + displayLabel + "</td></tr>");
        sb.Append("<tr><td colspan='2'>&nbsp</td></tr>");
        sb.Append("</table>");
        sb.Append("<table style='border: 1px solid gray' align='center' width='700px'>");
        sb.Append("<tr><td colspan='3'><strong>Select Exeption Reason</strong></td></tr>");
        sb.Append("<tr><td><input type='"checkbox'" ID='"chkLocal" + exemptionID + "'" runat='"server'" /></td>");
        sb.Append("<td align='left'><strong>Local Restriction</strong></td>");
        sb.Append("<td align='left'><i>NOTE: Please limit explanation to xx characters or less</i></td>");
        sb.Append("</tr><tr>");
        sb.Append("<td valign='top'><input type='"checkbox'" ID='"chkOther" + exemptionID + "'" runat='"server'" /></td>");
        sb.Append("<td valign='top' align='left'><strong>Other (Please Specify to the right)</strong></td>");
        sb.Append("<td colspan=><textarea style='width: 390px; max-width: 390px;' id='"txtOther" + exemptionID + " cols='"100'" rows='"2'" wrap='"virtual'" runat='"server'"></textarea></td>");
        sb.Append("</tr>");
        sb.Append("</table>");
        sb.Append("<table><tr><td colspan='3'>&nbsp<br /></td></tr></table>");
        count++;
    }
    return sb.ToString();
}

这将遍历一个包含14行的datarow数组,并为每一行创建一个复选框,然后为每一行添加两个复选框,用于本地和其他豁免。我只是不明白的是如何在代码隐藏中勾选复选框以确保它们被选中。任何建议或链接,帮助将不胜感激。

在填充了复选框列表(以及复选框的子列表)之后,我如何在代码隐藏中检查它们?c#

你必须改变一些东西。最大的问题是您不能将服务器标记用作字符串。所以复选框中的runat服务器没有做任何事情。如果您查看生成的html,您将看到runat="server"在html中。

所以,如果你想采用这种方法,这很好,然后给复选框一个唯一的名字,如name='"chkOther_dr1'",然后你可以使用请求。表格或请求。参数来检查复选框是否被选中,如果它们没有被选中,它们将不会成为集合的一部分。

即使您实际创建了服务器控件,您也会遇到同样的问题,因为当您试图在回发中检查它们时,它们将不存在。所以…

DataRow[] exemption = ds.Tables[2].Select("ValidExemptionTypeID='2'");
foreach (DataRow dr in exemption)
{
    string exemptionType = dr["ValidExemptionTypeID"].ToString();
    string exemptionID = dr["ValidExemptionID"].ToString();
    string exemptionDesc = dr["validExemptionDescription"].ToString();
    string displayLabel = dr["DisplayLabel"].ToString();
    sb.Append("<table><tr><td colspan='3'>&nbsp<br /></td></tr></table>");
    sb.Append("<table align='center' width='730px'>");
    sb.Append("<tr><td width='20px' align='left'><input type='"checkbox'" name='"chk" + exemptionID + "'"  /></td>");
    sb.Append("<td align='left'><strong>" + exemptionDesc + "</strong></td>");
    sb.Append("</table>");
    sb.Append("<table align='center' width='630px'>");
    sb.Append("<tr><td>" + displayLabel + "</td></tr>");
    sb.Append("<tr><td colspan='2'>&nbsp</td></tr>");
    sb.Append("</table>");
    sb.Append("<table style='border: 1px solid gray' align='center' width='700px'>");
    sb.Append("<tr><td colspan='3'><strong>Select Exeption Reason</strong></td></tr>");
    sb.Append("<tr><td><input type='"checkbox'" name='"chkLocal_" + exemptionID + "'"  /></td>");
    sb.Append("<td align='left'><strong>Local Restriction</strong></td>");
    sb.Append("<td align='left'><i>NOTE: Please limit explanation to xx characters or less</i></td>");
    sb.Append("</tr><tr>");
    sb.Append("<td valign='top'><input type='"checkbox'" name='"chkOther_" + exemptionID + "'" /></td>");
    sb.Append("<td valign='top' align='left'><strong>Other (Please Specify to the right)</strong></td>");
    sb.Append("<td colspan=><textarea style='width: 390px; max-width: 390px;' name='"txtOther_" + exemptionID + " cols='"100'" rows='"2'" wrap='"virtual'" ></textarea></td>");
    sb.Append("</tr>");
    sb.Append("</table>");
    sb.Append("<table><tr><td colspan='3'>&nbsp<br /></td></tr></table>");
    count++;
}
return sb.ToString();

,然后使用Request上的params/form集合来获取它们,并查找下划线之前的部分(使用StartsWith)。

 CheckBox chkBox= (CheckBox)this.FindControl("chkOther");
if(chkBox.Checked.Equale(true))
{
}

在你的一个复选框上试试,如果成功了,那么对其他的复选框也做同样的事情。