Вы должны изменить несколько вещей. Большая проблема в том, что вы не можете использовать теги сервера в качестве строки. Таким образом, сервер runat в ваших флажках ничего не делает. если вы посмотрите на сгенерированный html, вы увидите runat = "server" в HTML.
Итак, если вы хотите использовать этот подход, который подходит, тогда дайте флажкам уникальное имя, например name = \ "chkOther_dr1 \", тогда вы можете использовать Request.Form или Request.Params, чтобы проверить, установлены ли флажки проверены, они не будут частью коллекции, если они не проверены.
Даже если вы действительно создадите серверные элементы управления, у вас возникнет та же проблема, потому что они не будут существовать, когда вы попытаетесь проверить их в обратной передаче.
так что ...
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'> <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'> </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'> <br /></td></tr></table>");
count++;
}
return sb.ToString();
и затем, чтобы получить их, используйте коллекцию params / form по запросу и найдите часть перед подчеркиванием (используйте StartsWith).