当按钮被单击,而不是重定向,它只是删除表
本文关键字:重定向 删除 按钮 单击 | 更新日期: 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.OnClientClick = "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.OnClientClick = "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);
}
你的动态按钮的事件映射不正确。
- 当你想调用客户端时,可以使用
- OnClientClick脚本。
- 当您想绑定a时,必须使用Click服务器端事件。
btnEdit.OnClientClick = "btnEdit_Click";
并加上这一行
btnEdit.Click += new EventHandler(btnEdit_Click);
我做了一些事情来解决这个问题…
- 添加
<%@ Page EnableEventValidation="false" %>
使Postback每次都重新创建表
使用命令添加Onclick功能
btnEdit.Command += new CommandEventHandler(this.btnEdit_Click);