设置'onClick'在代码隐藏中动态添加控件时调用客户端方法

Set the 'onClick' to call a client method when dynamically adding control in Code Behind

我正在代码隐藏中动态添加一个 RadioButtonList。我想要它,这样 'OnClick' 就不会调用 JavaScript,而是调用我后面的代码中的一个方法。

这可能吗?

另外,有没有办法设置让这个say控件有runat="server"?

您可以使用按钮点击事件 https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.click(v=vs.110).aspx

请务必在代码的 Page_Init() 部分添加控件,而不是在 Page_Load() 或更高版本中。在 Page_Init() 设置中设置事件处理程序 += 行。如果你这样做,控件应该 运行 服务器端。我不确定 runat="server" 是否会被显式设置,但控件会以这种方式运行。

是的,这是可能的。此外,不需要 runat="server" 因为您是在代码中创建控件。

您需要设置 RadioButtonList 对象的 OnSelectedIndexChanged 事件。正如@Robert 提到的,如果您动态创建控件,则需要将它们包装在 Page_Init().

    protected void Page_Init(Object sender, EventArgs e) {
        RadioButtonList radiobuttonlist = new RadioButtonList();

        radiobuttonlist.SelectedIndexChanged += radiobuttonList_CheckedChanged;

        //Set the AutoPostBack to true proptery to that the user action
        // will immediately post-back to the server

        radiobuttonlist.AutoPostBack = true;
    }

    private void radiobuttonList_CheckedChanged(object sender, EventArgs e) {
        //Code you want to execut when a user selects a different item
    }

参考:https://msdn.microsoft.com/en-us/library/System.Web.UI.WebControls.ListControl.SelectedIndexChanged(v=VS.110).aspx