弹出窗口打开时不会触发按钮单击事件

时间:2014-02-28 14:30:11

标签: c# javascript ado.net sqlclient

我在aspx的网站上工作,我需要弹出一个。我有一个弹出窗口,我想在网站上使用它。 我的问题是当我在我的图像按钮中使用弹出窗口时,弹出窗口打开但是按钮_click事件不会触发。我只是希望我的弹出窗口打开,按钮点击事件也正确启动。 请帮帮我。我在javascript中很弱。 我的代码在这里: -

Asp.Net代码: -

         <script type="text/javascript">
               $("[id*=ImageButton1]").live("click", function () {
                   $("#modal_dialog").dialog({
                       buttons: {
                           Close: function () {
                               $(this).dialog('close');
                           }
                       },
                       modal: true
                   });
                   return false;
               });
</script>

                <asp:ImageButton ID="ImageButton1" style="margin-left:7px;" ImageUrl="~/button.png"  runat="server" 
                    onclick="ImageButton1_Click"></asp:ImageButton>
             

和我的c#代码在这里: -

            protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["LPSConnection"].ConnectionString.ToString());
    con.Open();
    int id = Int32.Parse(Request.QueryString["id"].ToString());
    SqlDataReader rd = new SqlCommand("Select Booked from ExpertChat where id=" + id, con).ExecuteReader();
    rd.Read();

    int x = Int32.Parse(rd["Booked"].ToString());
    rd.Close();
    if (x == 0)
    {
        SqlCommand cmd = new SqlCommand("Update ExpertChat set Booked=1 where id=" + id, con);
        cmd.ExecuteNonQuery();
        SqlCommand mRead1 = new SqlCommand("insert into chat (ExpertName,UserName,rate) Values ('" + Label1.Text + "','" + Session["SName"] + "','" + Label5.Text + "')", con);
        mRead1.ExecuteNonQuery();
        SqlDataReader mRead4;
        mRead4 = new SqlCommand("Select top 1 id from Chat where ExpertName='" + Label1.Text + "' order by id Desc", con).ExecuteReader();
        mRead4.Read();
        int x1;
        x1 = Int32.Parse(mRead4["id"].ToString());
        mRead4.Close();

        wait(x1);
    }
    else
    {
        Response.Redirect("ExpertMail.aspx?id=" + id);

    }

}

1 个答案:

答案 0 :(得分:0)

我提供了一个完整的工作示例。首先,您需要至少一个服务器(回发)控件,以便渲染引擎包含方法__doPostBack。在关闭对话框时,您调用回发以调用服务器方法。

<强> ASPX

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SimplePage.aspx.cs" Inherits="DeleteMeEgal.SimplePage"%>

<html>
<head runat="server">
    <title></title>
</head>
<body>
    <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.0.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.js"></script>

    <form id="form1" runat="server">
    <div>

    Button: 
    <asp:ImageButton ClientIDMode="Static" ID="ImageButton1" 
            ImageUrl="http://www.heise.de/icons/ho/heise_online_lupe.gif"  runat="server" 
            onclick="ImageButton1_Click1"></asp:ImageButton>


 <script type="text/javascript">
     $(document).ready(function () {
         $('#ImageButton1').click(function () {
             $("#dialog").dialog(
                    {
                        buttons: {
                            Close: function () {
                                $(this).dialog('close');
                                __doPostBack('ImageButton1', '');
                            }
                        },
                        modal: true
                    });
             return false;
         });
     });
</script>
    </div>

    <div style="visibility: hidden">
        <div id="dialog" title="Basic dialog" >
          <p>This is the default dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.</p>
        </div>
    </div>

    <%-- included to force __doPostBack javascript function to be rendered --%>
    <asp:LinkButton ID="LinkButton1" runat="server" /> 

    </form>
</body>
</html>

代码背后:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace DeleteMeEgal
{
    public partial class SimplePage : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void ImageButton1_Click1(object sender, ImageClickEventArgs e)
        {
            Response.Write("You ran the ImageButton1_Click click event");
        }

    }
}