0

该页面由链接按钮及其方法组成:

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 方法中的 LinkBut​​tonClick 内部进行操作,一切正常,按钮已创建,并且 b_click 在单击此按钮时也可以工作。

4

1 回答 1

1

为什么需要在按钮单击时动态构建表格?你能不能把它建在页面加载和隐藏它。当按钮单击显示它 - 它可以显示在客户端或服务器端;

我的意思是我什至会把它放在客户端——我不喜欢 asp.net 的事情是回发太多。从字面上看,它是在隐藏字段中发布表单及其数据(如视图状态)并重新呈现整个页面。对我来说似乎效率低下 - 您的 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 以来已经有一段时间了,所以让我知道这是否适合你....

于 2012-09-27T01:36:01.750 回答