因此,虽然与WebForm混淆,我试图创建一个页面,从一个SQL服务器输出表到Page_Load上的HTML表。然后我尝试将一个按钮添加到将重定向到一个页面的列。唯一的问题是,当我按下按钮时根本没有任何反应......我尝试在onclick方法中放置断点,但它们从未到达。动态创建按钮拒绝调用它的onClick
num = ds.Tables[0].Rows.Count;
htmlTable.Append("<tr style='background-color:#bd0000; color: White;'><th>ID</th><th>Job #</th><th>Project</th><th>Completed By</th><th>Date Created</th><th></th></tr>");
if (!object.Equals(ds.Tables[0], null))
{
if (ds.Tables[0].Rows.Count > 0)
{
int MAX_VIEW = (ds.Tables[0].Rows.Count > 15) ? 15 : ds.Tables[0].Rows.Count;
for (int i = 0; i < MAX_VIEW; i++)
{
htmlTable.Append("<td>" + ds.Tables[0].Rows[i]["CCPOF_ID"] + "</td>");
htmlTable.Append("<td>" + ds.Tables[0].Rows[i]["Job_Number"] + "</td>");
htmlTable.Append("<td>" + ds.Tables[0].Rows[i]["Project_Name"] + "</td>");
htmlTable.Append("<td>" + ds.Tables[0].Rows[i]["CompletedBy"] + "</td>");
htmlTable.Append("<td>" + ds.Tables[0].Rows[i]["DateCreated"] + "</td>");
htmlTable.Append("<td width=\"10%\"><button class=\"astext\" name=\"Btn" + ds.Tables[0].Rows[i]["CCPOF_ID"] + "\" id =\"" + ds.Tables[0].Rows[i]["CCPOF_ID"] + "\" OnClick =\"btnEdit_Click\" runat=\"server\" >Edit</button> | Details</td>");
htmlTable.Append("</tr>");
}
htmlTable.Append("</table>");
DBDataPlaceHolder.Controls.Add(new System.Web.UI.WebControls.Literal { Text = htmlTable.ToString() });
}
else
{
htmlTable.Append("<tr>");
htmlTable.Append("<td align='center' colspan='4'>There is no Record.</td>");
htmlTable.Append("</tr>");
}
}
}
protected void btnEdit_Click(object sender, EventArgs e)
{
String id = ((System.Web.UI.WebControls.Button)sender).ID;
Server.Transfer("CcpofDetails.aspx?ID=" + id);
}
}
当我检查在现场形成一个按钮,这是我所看到的
<button class="astext" name="Btn10" id="10" onclick="btnEdit_Click" runat="server">Edit</button>
因此,我可以理解,所以我可以理解你在说什么,只有在“编译时”(我不知道web dev dev equivalent)或通过asp.net添加时才能识别控件。因此,向HTML文档注入任何内容都无法与asp.net通信? – Javant
@Javant是的,你是对的。你不能像这样使用服务器端代码。 –
@Javant只是提到你可以用这种方式使用Javascript代码,因为它可以在客户端运行。但他们的任务完全不同 –