使用JavaScript onclick删除元素并在SQL中保存变量

时间:2013-07-19 19:06:25

标签: c# javascript asp.net

我正在尝试向Web应用添加一个功能,当用户点击放在div上的“x”按钮时,该功能会删除div。 Web应用程序是用ASP.NET编写的。我还需要更新一个SQL表值,说明用户已经关闭了div,所以下次用户加载页面时,不需要的div就不存在了。这里的问题是我希望在没有页面重新加载的情况下发生这种情况(回传)。这样我可以使用jQuery动画div滑动/消失,同时让应用程序记住已经关闭。到目前为止,这是我的代码。

ASP.NET

<asp:Button ID="ConCloseButton" class="CloseBut" runat="server" OnClientClick="closeConPanel();return false;;" OnClick="ConClose_Click"  Text="&#10006;" />

这是我的JavaScript

        function closeConPanel() {
            document.getElementById('con-feed').style.display = 'none';
        }

这是我的C#服务器代码

 protected void ConClose_Click(object sender, EventArgs e)
    {
        SqlConnection conn = new SqlConnection("Data Source=xxxx;Initial Catalog=xxxxxx;User ID=xxxxxx_user;Password=xxxxxxxx_user");
        conn.Open();
        SqlCommand cmdUpdate = new SqlCommand("Update CookieInfo Set ConstNewsData='0' where UserEmailId='" + (Label1.Text).ToString() + "'", conn);
        cmdUpdate.ExecuteNonQuery();
        conn.Close();
        HttpCookie cookie = Request.Cookies["Dashboard"];
        cookie["ConstNews"] = "0";
        cookie.Expires = DateTime.Now.AddYears(1);
        Response.Cookies.Add(cookie);
}

因此,作为总结,我希望用户点击ASP按钮,隐藏“con-feed”div,并让应用程序记住这一点(他们使用电子邮件地址登录,这是在SQL上表示他们的偏好的表。如果他们关闭一个div,它的状态将== 0,并且不会被显示。否则它的== 1,这将使它可见。)。所有这些都有效,但我希望它能够在没有回发的情况下工作。

1 个答案:

答案 0 :(得分:1)

不要将您的ConClose_Click逻辑绑定到事件,只需将其设置为可以通过AJAX直接调用的页面。像“RemoveDivFromDB.aspx”这样的东西。

然后修改您的javascript方法以包含:

    function closeConPanel() {
        document.getElementById('con-feed').style.display = 'none';
        $.ajax({
              url: "/RemoveDivFromDB.aspx?id=con-feed",
              type: "get"
         });
    }

你可以而且应该包括一个“成功”和“失败”的javascript方法来适当地处理每个案例。有关jquery站点的更多信息,请访问:http://api.jquery.com/jQuery.ajax/