Динамически вставьте флажок в таблицу в ASP.NET с переменным количеством полей. C# код позади

Я создаю форму запроса на исключение, которая заполняется из базы данных SQL Server 2008.

DataRow[] exemption = ds.Tables[2].Select();
    foreach (DataRow dr in exemption)
    {
        string exemptionType = dr["ExemptionType"].ToString();
        string exemptionID = dr["ExemptionID"].ToString();
        string exemptionDesc = dr["ExemptionDescription"].ToString();
        string displayLabel = dr["DisplayLabel"].ToString();
        sb.Append("<table align='center' width='730px'>");
        sb.Append("<tr><td><asp:CheckBox ID=\"chk" + exemptionID + "\" runat=\"server\" /></td>");
        sb.Append("<td><strong>" + exemptionDesc + "</strong></td>");
        sb.Append("</table>");
        sb.Append("<table align='center' width='630px'>");
        sb.Append("<tr><td>" + displayLabel + "</td></tr>");
        sb.Append("</table>");
    }
    return sb.ToString();

Как сейчас, таблица строится нормально, все данные отображаются нормально, но флажок не отображается. Интересно, можно ли вообще так делать, и если да, то что я делаю не так?

1 ответ

Решение

Вы вставляете ASP.NET в свой HTML, и этот HTML, вероятно, не обрабатывается ASP.NET. Если вы хотите сделать это так, как вы делаете сейчас... переключитесь на использование input теги вроде так...

DataRow[] exemption = ds.Tables[2].Select(); 
foreach (DataRow dr in exemption) 
{ 
  string exemptionType = dr["ExemptionType"].ToString(); 
  string exemptionID = dr["ExemptionID"].ToString(); 
  string exemptionDesc = dr["ExemptionDescription"].ToString(); 
  string displayLabel = dr["DisplayLabel"].ToString(); 
  sb.Append("<table align='center' width='730px'>"); 
  sb.Append("<tr><td><input type=\"checkbox\" id=\"chk" + exemptionID + "\" /></td>"); 
  sb.Append("<td><strong>" + exemptionDesc + "</strong></td>"); 
  sb.Append("</table>"); 
  sb.Append("<table align='center' width='630px'>"); 
  sb.Append("<tr><td>" + displayLabel + "</td></tr>"); 
  sb.Append("</table>"); 
} 
return sb.ToString(); 

Другой путь - создать флажки ASP.NET. Это будет выглядеть примерно так...

  var checkbox = new CheckBox();
  checkbox.ID = "chk" + exemptionId;
  wrapper.Controls.Add(checkbox);

Где обертка Panel или что-то в этом роде.

Другие вопросы по тегам