c#onclick和onclientclick同时

时间:2014-02-04 10:53:09

标签: c# javascript sql-server

我在我的网页上有onclientclick和onclick为Exit按钮写的事件。单击时,应首先执行update语句,然后关闭窗口。

<asp:Button ID="ExitButton" runat="server"  OnClientClick="javaScript:self.close(); return false;" OnClick="ExitButton_Click"  UseSubmitBehavior="false" Text="Exit" Width="102px" CssClass="CssStyle2" Height="29px" />

protected void ExitButton_Click(object sender, EventArgs e)
{
    string sqlUpd = @"UPDATE top (2) [db1].[TestTable] set flag=0 
                     where Date is null and flag=-1";
    using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLConnectionString"].ConnectionString))
    {
        connection.Open();
        SqlCommand cmdUpd = new SqlCommand(sqlUpd, connection);

        try
        {
            Int32 rows = cmdUpd.ExecuteNonQuery();
            connection.Close();
        }
        catch (Exception eupd)
        {
            lblUpdateErr.Text = "Error occurred in update";
        }
    }
}

Onclientclick正在解雇但不是onclick,即记录未更新。有没有办法实现这个目标?

由于 Rashmi

1 个答案:

答案 0 :(得分:2)

在回发发生之前执行

OnClientClick。它通常用于客户端验证之类的事情,您需要使用return false来防止回发发生。由于您总是从处理程序返回,因此回发将永远不会执行,因此也不会调用服务器端处理程序。

您需要删除OnClientClick属性,而是在服务器端处理程序中调用此行:

ScriptManager.RegisterStartupScript(this, this.GetType(), "windowclose", "self.close();", true);

这将导致在回发执行后关闭窗口,并将结果返回给浏览器。这也意味着如果更新以异常结束,则窗口不会关闭。

相关问题