0

SqlDependency を使用して、特定の db テーブルの変更を監視しています。change イベントがトリガーされた後、javascript イベントを呼び出す必要があります。何か案が ?このコードは私のasp.netページのコードビハインドにあります

    public void StartTasksMonitor()
    {
        var con = new SqlConnection { ConnectionString = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString };

            if (con.State== System.Data.ConnectionState.Closed)
            {
                con.Open();
            }
            var cmd = new SqlCommand { CommandText = @"SELECT Id
      ,AssignedBy
      ,DateAssigned
      ,AssignedTo
      ,Title
      ,Description
      ,Completed
      ,DateDue
      ,Deleted
      ,DateDeleted
  FROM dbo.Tasks", Connection = con, Notification = null };

            SqlDependency dependency = new SqlDependency(cmd);
            SqlDataReader reader = cmd.ExecuteReader();
            con.Close();
            dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);


    }

    void dependency_OnChange(object sender, SqlNotificationEventArgs e)
    {
        if (e.Type == SqlNotificationType.Change)
        {
            // Have to remove this as it only work's once
            SqlDependency sqlDep = sender as SqlDependency;
            sqlDep.OnChange -= dependency_OnChange;

            // Resetup Dependecy
            StartTasksMonitor();
            string clientFunc = @"alert('test')";

            ScriptManager.RegisterStartupScript(this, GetType(), "alert", clientFunc , true);


        }

    }

RegisterStartupScript は、ポストバックが発生した場合にのみ機能します。ここではポストバックは発生していません。全体の主な目的は、ポストバックを回避することです:)

4

1 に答える 1

0

SignalR を使用して解決しました:) SignalR + SQLDependency は素晴らしいレシピです:) Happy Coding

于 2013-10-31T07:48:51.130 に答える