【发布时间】:2015-06-04 16:19:29
【问题描述】:
我想创建一个动态按钮,当单击弹出窗口并用户键入然后提交时。
首先我创建的动态按钮取决于表格行
TableCell tc;
for (int i = 1; i < Approval_TBL.Rows.Count; i++)
{
TableRow tr = Approval_TBL.Rows[i];
tr.Cells.Add(tc = new TableCell());
Button tb = new Button();
tb.ID = Convert.ToString(i);
tb.Text = "Reject";
tb.CssClass = "btn btn-default";
tb.OnClientClick = "javascript:$find('popup1').show();return false;__doPostBack('btnReject_click','')";
tb.Click += new EventHandler(btnReject_click);
tc.Controls.Add(tb);
}
然后我使用 ajax 创建了弹出窗口:
<ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender1" runat="server"
TargetControlID="1"
BehaviorID="popup1"
PopupControlID="Panel1"
DropShadow="true"
CancelControlID="Button3"
OnOkScript="OkButtonClick"
BackgroundCssClass="BackgroundStyle" />
那么我已经创建了点击事件
protected void btnReject_click(object sender, EventArgs e)
{
//code
}
目前看起来它只在弹出窗口出现的地方运行 Onclientclick 事件,但它不会进入 btnReject_click。但是如果我删除onclientclick,它将能够进入btnReject_click。
我的做法很奇怪,因为我不知道如何使用 asp.net,而且我的大部分代码都放在服务器端 (c#)。
【问题讨论】:
-
Onclientclick 你指定了 return false 所以没有代码会进一步执行.. tb.OnClientClick = "javascript:$find('popup1').show(); __doPostBack('btnReject_click','')";
-
好的。研究了1天终于明白了!! onclientclick 在客户端,而 click 在服务器端。因此它会先触发 onclientclick,然后再转到服务器端点击。