我使用字符串构建器类中的append方法在代码后面创建了一个html表,我从数据库中提供了数据,并为表中的每一行添加了一个复选框 但现在我不知道如何访问这些复选框以从表中删除选定的行
这是我的c#代码
public void GetDataFirstTime()
{
string LogedInUser = Request.Cookies["CLGN"].Value.ToString();
StringBuilder html = new StringBuilder();
String result = String.Empty;
SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["CRConnection"].ConnectionString);
cnn.Open();
SqlCommand cmd = new SqlCommand("Select MessageNum , Message , SenderName ,Date from Message where ReciverUserName=@run", cnn);
cmd.Parameters.AddWithValue("@run", LogedInUser);
SqlCommand cmd2 = new SqlCommand("Select Max(MessageNum) from Message where ReciverUserName=@run ",cnn);
cmd2.Parameters.AddWithValue("@run", LogedInUser);
HttpCookie Max = new HttpCookie("MMI");
Max.Value = cmd2.ExecuteScalar().ToString();
Response.Cookies.Add(Max);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
html.Append("<div id = xxx> ");
html.Append("<table border='1'>");
html.Append("<tr>");
foreach (DataColumn col in dt.Columns)
{
html.Append("<th>");
html.Append(col.ColumnName);
html.Append("</th>");
}
html.Append("</tr>");
foreach (DataRow row in dt.Rows)
{
html.Append("<tr>");
foreach (DataColumn col in dt.Columns)
{
html.Append("<td>");
html.Append(row[col.ColumnName]);
html.Append("</td>");
}
html.Append("<td>");
html.AppendLine("<td><input TYPE=CHECKBOX NAME= CheckDel'" + row.ToString() + "'</td>");
html.Append("</td>");
html.Append("</tr>");
}
html.Append("</table>");
html.Append("</div>");
cnn.Close();
Response.Write(html);
}
所以任何人都可以帮助我
答案 0 :(得分:1)
首先,您需要更正创建复选框的代码。现在它产生这个HTML代码:
<td><td><input TYPE=CHECKBOX NAME= CheckDel'System.Data.DataRow'</td></td>
浏览器会将其解释为:
<td></td>
<td>
<input type="CHECKBOX" name="CheckDel'System.Data.DataRow'</td">
</td>
由于彼此嵌套了表格单元格标签,浏览器将在开始下一个单元格之前结束第一个单元格。由于输入标记没有结束括号,因此它将使用</td>
标记的右括号结束它,包括复选框名称中的</td
。 row.ToString()
没有从数据行获取任何内容,它返回类的名称,即"System.Data.DataRow"
。
我假设你想使用数据行中的一些数据来创建复选框名称,如下所示:
html.Append("<td>");
html.Append("<input type=\"checkbox\" name=\"CheckDel").Append(row["id"]).Append("\">");
html.Append("</td>");
现在,当您执行回发时,任何选中的复选框都将包含在表单数据中,与此类似(复选框的默认值为"on"
):
CheckDel42=on
您可以使用Request.Form
集合来检查复选框。遍历数据行中的项目并检查相应的表单值,如:
if (Request.Form["CheckDel" + row["id"]] != null) {
// the checkbox was checked for this item
}