После заполнения списка флажков (со списками флажков), как я могу проверить их в коде позади?C # - PullRequest
0 голосов
/ 20 декабря 2011

Во-первых, вот код.

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();
}

Он проходит через массив datarow с 14 строками и создает флажок для каждого, затем добавляет два флажка для каждой строки для локальных и других исключений.Я просто не могу понять, как установить флажки в коде, чтобы убедиться, что они отмечены.Будем весьма благодарны за любые предложения или ссылки, чтобы помочь.

Ответы [ 2 ]

1 голос
/ 20 декабря 2011

Вы должны изменить несколько вещей. Большая проблема в том, что вы не можете использовать теги сервера в качестве строки. Таким образом, сервер 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'>&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();

и затем, чтобы получить их, используйте коллекцию params / form по запросу и найдите часть перед подчеркиванием (используйте StartsWith).

1 голос
/ 20 декабря 2011
 CheckBox chkBox= (CheckBox)this.FindControl("chkOther");
if(chkBox.Checked.Equale(true))
{
}

Попробуйте это для одного из ваших флажков, если это работает, чем то же самое для других флажков.

...