该页面包含linkbutton及其方法:
protected void LinkButton_Click(Object sender, EventArgs e)
{
TableRow tr = new TableRow();
TableCell tc = new TableCell();
Button b = new Button();
b.Text = "x";
b.CommandArgument = "someargument";
b.Click +=new EventHandler(this.b_Click);
tc.Controls.Add(b);
tc.Width = 30;
tr.Controls.Add(tc);
Table.Rows.Add(tr);
}
方法:
protected void b_Click(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "UpdateCom", "alert('ok');return false;", true);
string id = (sender as Button).CommandArgument;
// other operations...
}
首先点击链接按钮,我在表格中创建按钮,然后当我点击按钮时,b_Click方法不起作用。我甚至没有看到javascript警报,而只是发生页面更新。
什么问题?
请注意,如果我在pageLoad方法中的LinkButtonClick内部进行操作,一切正常,按钮被创建,单击此按钮时b_click也可以。
答案 0 :(得分:1)
为什么需要在单击按钮时动态构建表?你可以在页面上构建它加载并隐藏它。单击按钮显示它 - 它可以在客户端或服务器端显示;
我的意思是我甚至会把它放在客户端 - 我不喜欢asp.net的东西是回发太多了。从字面上看,它是在隐藏字段中发布表单及其数据,如viewstate,并重新呈现整个页面。对我来说似乎无效 - 您的Web服务器可以执行其他操作,例如提供页面请求,并将此UX处理推迟到客户端浏览器。
<table id="testTable" style="display: none">
<tr>
<td width="30px">
<input id="b" name="b" type="button" value="someargument" text="Click Me!" onclick='alert(this.value);document.getElementById("testTable").style.display="none";' />
</td>
</tr>
</table>
在链接按钮中,您可以添加此属性。
onclientclick='document.getElementById("testTable").style.display="inline";' /> // notice I used the single quote on the outside of the onclick. This would display the table..
如果您仍然需要在popup2按钮上执行某些服务器端操作 - 您可以添加runat =“server”并将onclick更改为onclientclick ...
自从我使用asp.net webforms以来已经有一段时间了,所以请告诉我这是否对您有用....