مرجع تخصصی برنامه نویسان

بزرگترین انجمن برنامه نویسان فارسی زبان

SignalR and GridView

ﺳﻪ شنبه, 26 اردیبهشت 1396 13:55

SignalR and GridView

با سلام

امکانش هست که زمانی که تغییری در دیتابیس ایجاد شد، یک تابع که مقدادیر یک gridview را بارگذاری میکنه را فراخوانی کرد؟

ﺳﻪ شنبه, 26 اردیبهشت 1396 18:52
کسانی که از این پست تشکر کرده اند : mansour76,
چهارشنبه, 27 اردیبهشت 1396 08:36

من برنامه شو نوشتم.

تابع خود SignalR یک تابع static هست و نمیشه تابع دیگری توش اجرا کرد یا مثلا به یک labale مقدار داد.

برنامه را ضمیمه کنم؟

چهارشنبه, 27 اردیبهشت 1396 10:10

شما باید یک تابع جدا درست کنید و از سرور push کنید

کسانی که از این پست تشکر کرده اند : mansour76,
چهارشنبه, 27 اردیبهشت 1396 10:17
[WebMethod]
        public static IEnumerable<Products> GetData()
        {
            using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DataBase"].ConnectionString))
            {
                connection.Open();
                using (SqlCommand command = new SqlCommand(@"SELECT [ID] FROM [dbo].[tblSignalR]", connection))
                {
                    // Make sure the command object does not already have
                    // a notification object associated with it.
                    command.Notification = null;
                    SqlDependency.Start(ConfigurationManager.ConnectionStrings["DataBase"].ConnectionString);
                    SqlDependency dependency = new SqlDependency(command);
                    dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);

                    if (connection.State == ConnectionState.Closed)
                        connection.Open();

                    using (var reader = command.ExecuteReader())
                        return reader.Cast<IDataRecord>()
                            .Select(x => new Products()
                            {
                                id = x.GetInt32(0),
                                //Name = x.GetString(1),
                                //LastExecutionDate = DateTime.Now,// x.GetDateTime(2),
                                //Status = x.GetString(3)
                            }).ToList();
                }
            }
        }

public void Showinfo()
    {
            var qShow = from k in db.HistoryCalls
                        join lev in db.Lables on k.HLevel equals lev.LID
                        join pr in db.ProjectInfos on k.PID equals pr.PID
                        join status in db.Lables on k.HStatusChek equals status.LID
                        where k.HAshow == true && (cmbSelect.SelectedValue == status.LID.ToString() || cmbSelect.SelectedValue == "0")
                        orderby k.HDate descending
                        select new
                        {
                            Date2 = k.HDate.ToString().Substring(0, 4) + "/" + k.HDate.ToString().Substring(4, 2) + "/" + k.HDate.ToString().Substring(6, 2),
                            k.HID,
                            HCodeRe = int.Parse(k.HCodeRe),
                            k.HTime,
                            k.CName,
                            Prname = pr.PName,
                            LevelType = lev.LDecFa,
                            retype = status.LDecFa,
                            k.HdecTeamfani,
                            k.HDirectoryMatn,
                            k.PID,
                            k.HStatusErjae,
                            k.HObservation
                        };
        RadGrid1.DataSource = qShow;
        RadGrid1.DataBind();
        }

می خواهم در تابع اول، تابع دوم را فراخوانی کنم.

امکانش هست؟

چهارشنبه, 27 اردیبهشت 1396 10:22

کد کامل hub را قرار دهید

کسانی که از این پست تشکر کرده اند : mansour76,
چهارشنبه, 27 اردیبهشت 1396 10:24
namespace SignalRRealTimeSQL
{
    public class MyHub : Hub
    {
        public static void Show()
        {
            IHubContext context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
            context.Clients.All.displayStatus();
        }
    }
}

اگر لازمه می تونم کل برنامه را براتون بفرستم.

چهارشنبه, 27 اردیبهشت 1396 10:31

باید در hub تابع ها رو بنویسید و به سمت کلاین push کنید

در کلایند در یک جدول یا همان Table نمایش دهید

شما نمیتونید گرید را مجدد bind کنید مگر از Ajax استفاده کنید

کسانی که از این پست تشکر کرده اند : mansour76,
چهارشنبه, 27 اردیبهشت 1396 11:35

امکانش هست زمانی که تغییر در پایگاه داده ایجاد شد، کل صفحه را دوباره بارگذاری کند؟

چهارشنبه, 27 اردیبهشت 1396 11:37

بله میتونید در تابع کلاینت صفحه را Reload کنید

چهارشنبه, 27 اردیبهشت 1396 11:39

با چه دستوری صفحه را reload کنم؟

این دستور را کجا استفاده کنم؟

چهارشنبه, 27 اردیبهشت 1396 12:21

من از این دستور استفاده کردم ولی ارور داد.

Response.Redirect(Request.RawUrl);

باید از چه دستوری استفاده کنم؟

چهارشنبه, 27 اردیبهشت 1396 12:25
چهارشنبه, 27 اردیبهشت 1396 12:26

location.reload();

این کد را باید در قسمت code behin وارد کنم؟

چهارشنبه, 27 اردیبهشت 1396 12:31

خیر

در Function در سمت کلاینت و از طریق Hub صدا بزنید

کسانی که از این پست تشکر کرده اند : mansour76,
چهارشنبه, 27 اردیبهشت 1396 12:37

سمت کلاینت همون جاوا اسکریپ میشه؟

چجوری در Hub اونو صدا بزنم؟

چهارشنبه, 27 اردیبهشت 1396 12:47

آهان متوجه شدم.

فقط چطور می تونم یک تابع در صفحه دیگه صدا بزنم؟

چهارشنبه, 27 اردیبهشت 1396 12:58

تابعی که در hub استفاده شده است static هست.

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید