Динамически вставьте флажок в таблицу в 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
или что-то в этом роде.