Динамически вставьте флажок в таблицу в ASP.NET с переменным количеством полей. C # код позади - PullRequest
0 голосов
/ 16 декабря 2011

Я создаю форму запроса на исключение, которая заполняется из базы данных 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 Ответ

2 голосов
/ 16 декабря 2011

Вы вставляете 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 или что-то в этом роде.

...