在html表格中动态设置OnClick按钮
本文关键字:设置 OnClick 按钮 动态 html 表格 | 更新日期: 2023-09-27 17:51:15
我正在动态创建一个表,每一行将包含一个按钮,这个按钮将调用一个函数,每个按钮将处理不同的参数,例如,
string Parameter1 = "MyValue";
string Parameter2 = "MyOthervalue";
HtmlInputButton input = new HtmlInputButton();
input.ID = "Button1";
input.Value = "button";
input.Attributes.Add("onclick", "MyFunction(" + Parameter1 + "," + Parameter2 + ");");
td = new HtmlTableCell();
td.Align = "center";
td.Controls.Add(input);
tr.Cells.Add(td);
当用户单击按钮时,我需要运行MyFunction,然后刷新页面以查看更改。
我知道也许我可以打开第二个页面并在URL中发送参数,但我想在同一个页面中使用代码,然后重新加载页面。
最好的方法是什么?
谢谢,
编辑。
我能够用下面的方法解决它:
input = new Button();
input.Text = "Click Me";
input.CommandArgument = "3|Parameter3";
input.Command += new CommandEventHandler(Button_Handler);
td = new HtmlTableCell();
td.Align = "center";
td.Controls.Add(input);
tr.Cells.Add(td);
tbTable.Rows.Add(tr);
public void Button_Handler(object sender, CommandEventArgs e)
{
Button mybutton = (Button)sender;
string[] Parameters = e.CommandArgument.ToString().Split('|');
mybutton.Text = Parameters[0] + "-" + Parameters[1];
//Call MyFunction(Parameters[0], Parameters[1]);
}
我有一个技巧,你可以使用隐藏按钮和隐藏字段:
HTML:<script type="text/javascript">
function MyFunction() {
// do something
document.getElementById("<%= hid.ClientID %>").value = "some value";
// trigger hidden button click
document.getElementById("<%= hiddenButton.ClientID %>").click();
}
</script>
<asp:HiddenField ID="hid" runat="server" />
<asp:Button ID="hiddenButton" runat="server" OnClick="hiddenButton_Click" style="display:none" />
背后的代码:
protected void hiddenButton_Click(object sender, EventArgs e)
{
// your business goes here
string value = hid.Value;
}
如果MyFunction是一个javascript函数,您可以在它的末尾添加location.reload()
以便重新加载页面。
这里我做了一些关于如何动态添加clickevents的示例代码:
void Page_Load(Object sender, EventArgs e)
{
HtmlInputButton NewButtonControl = new HtmlInputButton("submit");
NewButtonControl.ID = "NewButtonControl";
NewButtonControl.Value = "Click Me";
// Create an EventHandler delegate for the method you want to handle the event
// and then add it to the list of methods called when the event is raised.
NewButtonControl.ServerClick += new System.EventHandler(this.Button_Click);
// Add the new HtmlInputButton control to the Controls collection of the
// PlaceHolder control.
ControlContainer.Controls.Add(NewButtonControl);
}
void Button_Click(Object sender, EventArgs e)
{
// Display a simple message.
Message.InnerHtml = "Thank you for clicking the button.";
}
要刷新页面,你可以调用一个Javascript函数,像这样:
<script type="text/javascript">
function reloadPage()
{
window.location.reload()
}
</script>
或者试试这个:
Response.Redirect(Request.Url.AbsoluteUri);
希望能有所帮助