【问题标题】:how can i use button click event and onclientclick together我如何一起使用按钮单击事件和 onclientclick
【发布时间】: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,然后再转到服务器端点击。

标签: c# asp.net


【解决方案1】:

如果你使用 jQuery,那么

$("selector").on('click',function(){
 // your code here
});

【讨论】:

    【解决方案2】:

    在你的OnClientClickreturn false;。之后的任何内容都不会执行,因此回发永远不会发生。删除返回,回发应该会触发。

    tb.OnClientClick = $find('popup1').show();__doPostBack('btnReject_click','');";
    

    【讨论】:

    • 它仍然不会触发 btnReject_click 的事件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 2018-09-18
    • 2014-09-26
    相关资源
    最近更新 更多