当按钮被单击,而不是重定向,它只是删除表

本文关键字:重定向 删除 按钮 单击 | 更新日期: 2023-09-27 18:02:40

所以我有一个表动态生成的sql服务器,在一个单元格中嵌套按钮。当点击按钮应该重定向到另一个页面。但是,当前单击按钮时,页面会刷新并显示没有生成表的页面。我在onclick上按钮调用的方法中放置了一个断点,当我单击按钮时,断点永远不会到达。

标记:

<table class="table table-bordered" runat="server">  
    <tr>  
        <td align="center">  
            <asp:PlaceHolder ID="dbPlaceHolder" runat="server"></asp:PlaceHolder>  
        </td>  
    </tr>  
</table> 

在页面

上调用的方法
private void Create_Table()
{
    using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["connString"].ConnectionString))
    {
        //Connect to databse and grab table
        SqlCommand cmd = new SqlCommand("SELECT CCPOF_ID, Job_Number, Project_Name, CompletedBy, DateCreated FROM My_Table", conn);
        adapter = new SqlDataAdapter(cmd);
        dataTable = new DataTable();
        table = new Table();
        adapter.Fill(dataTable);
        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();
    }
    TableRow row = new TableRow();
    row.BackColor = ColorTranslator.FromHtml("#bd0000");
    row.ForeColor = System.Drawing.Color.White;
    TableHeaderCell headerCell;
    string[] headerName = {"ID", "Job #", "Project", "Completed By", "Date Created", "  "};
    //Add Headers
    for (int j = 0; j < dataTable.Columns.Count + 1; j++)
    {
        headerCell = new TableHeaderCell();
        headerCell.Text = headerName[j];
        row.Cells.Add(headerCell);
    }
    table.Rows.Add(row);
    //Add Columns
    for (int i = 0; i < dataTable.Rows.Count; i++)
    {
        row = new TableRow();
        for (int j = 0; j < dataTable.Columns.Count+1; j++)
        {
            if (j < dataTable.Columns.Count)
            {
                TableCell cell = new TableCell();
                cell.Text = dataTable.Rows[i][j].ToString();
                row.Cells.Add(cell);
            }
            else
            {
                TableCell cell = new TableCell();
            Button btnEdit = new Button();
            btnEdit.OnClientC‌​lick = "btnEdit_Click";
            btnEdit.ID = "Edit" + dataTable.Rows[i][0].ToString();
            btnEdit.Attributes.Add("name", "Edit" + dataTable.Rows[i][0].ToString());
            btnEdit.CssClass = "astext";
            btnEdit.Text = "Edit ";
            cell.Controls.Add(btnEdit);
            Button btnDetail = new Button();
            btnDetail.OnClientC‌​lick = "btnDetail_Click";
            btnDetail.ID = "Detail" + dataTable.Rows[i][0].ToString();
            btnDetail.Attributes.Add("name", "Detail" + dataTable.Rows[i][0].ToString());
            btnDetail.CssClass = "astext";
            btnDetail.Text = "Details";
            cell.Controls.Add(btnDetail); 
                row.Cells.Add(cell);
            }
        }
        table.Rows.Add(row);
    }
    table.CssClass = "table table-bordered";
    //Add Table to Markup
    dbPlaceHolder.Controls.Add(table);
}

其他方法…//方法需要更新,但这并不重要,因为它们永远不会被调用

protected void btnEdit_Click(object sender, EventArgs e)
{
    string id = ((System.Web.UI.WebControls.Button)sender).ID;
    Server.Transfer("CcpofDetails.aspx?ID=" + id);// To be changes to different page later
}
protected void btnDetail_Click(object sender, EventArgs e)
{
    string id = ((System.Web.UI.WebControls.Button)sender).ID;
    Server.Transfer("CcpofDetails.aspx?ID=" + id); 
}

当按钮被单击,而不是重定向,它只是删除表

你的动态按钮的事件映射不正确。

    当你想调用客户端时,可以使用
  1. OnClientClick脚本。
  2. 当您想绑定a时,必须使用Click服务器端事件。
因此,删除下面的代码行
btnEdit.OnClientClick = "btnEdit_Click";

并加上这一行

btnEdit.Click += new EventHandler(btnEdit_Click);

我做了一些事情来解决这个问题…

    添加
  •  <%@ Page EnableEventValidation="false" %>
    
  • 使Postback每次都重新创建表

  • 使用命令添加Onclick功能

     btnEdit.Command += new CommandEventHandler(this.btnEdit_Click);