使用字符串生成器访问在代码隐藏中创建的复选框

本文关键字:隐藏 代码 创建 复选框 访问 字符串 | 更新日期: 2023-09-27 18:15:59

我在代码后面创建了一个HTML表,使用字符串构建器类中的append方法,我从数据库中给它提供数据,并为表中的每一行添加了一个复选框但现在我不知道如何访问这些复选框来删除表

中的选定行这是我的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);
}

有谁能帮我一下吗

使用字符串生成器访问在代码隐藏中创建的复选框

首先需要更正创建复选框的代码。现在它生成了以下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>标签的右括号结束输入标签,包括复选框名称中的</tdrow.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
}