PDA

View Full Version : خواهشن کمک کنید مشکل در تایمر معکوس



mjt10063
شنبه 28 اردیبهشت 1392, 14:54 عصر
سلام دوستان

خیلی گشتم
میدونم زیاد هم بحث شده
حتی تو انجمن های غیر فارسی هم خیلی زیاد کد های جاوا پیدا کردم
همشون هم زمان اجرا کار میکردن

من به مشکل بزرگی بر خوردم اونم اینه که
جاوا، جی کوئری
بلد نیستم
و الانم تو تایمر معکوس گیر کردم
توی آزمون انلاینی میخوام کاربر بعد از کلیک کردن روی دکمه سمت سرور تایمر شروع بشه
مدت زمان معکوس رو از دیتابیس بگیره
و بعد از انتخاب هر گزینه تایم فعلی با تایم شمارنده چک بشه تا رفرش شدن و شروع دوباره تایمر
چک بشه و اگر صفحه رفرش شده کاربر تخلف کرده
و در اخر رویداد باتن ارسال پاسخ ها به جدول انجام بشه

با تشکر

mjt10063
شنبه 28 اردیبهشت 1392, 16:05 عصر
دوستان خواهشن کمک کنید
خیلی گشتم از صبح تا حالا
هنوزم دارم میگردم

ولی چیزی که بتونم متوجه بشم و ازش استفاده کنم پیدا نکردم

ahmad156
شنبه 28 اردیبهشت 1392, 19:24 عصر
دوست عزیز سوالتون واضح نیست.یه خرده دقیق تر بنویسین بهتر میشه کمکتون کرد!

mjt10063
شنبه 28 اردیبهشت 1392, 20:00 عصر
تایمر معکوس رو ساختم اینم کدش
فقط یه جا هایی خوندم خیلی
کنترل تایرم asp.net خیلی به سرور فشار میاره نمیدنم حقیقت داره یا نه
کد :

<asp:ScriptManager ID="sm1" runat="server" />
<asp:UpdatePanel ID="up1" runat="server" UpdateMode="always">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="" ></asp:Label>
<asp:Timer ID="Timer1" runat="server" Interval="1000" OnTick="Timer1_Tick">
</asp:Timer>
</ContentTemplate>
</asp:UpdatePanel>



static int sec ;
static int min ;
protected void Page_Load(object sender, EventArgs e)
{
//گرفتن مدت زمان امتحان درس
SqlCommand scmtime = new SqlCommand("Select_Time_Dars", scon);
scmtime.CommandType = CommandType.StoredProcedure;
scmtime.Parameters.AddWithValue("@k_dars",DropDownList1.SelectedItem.Value);
HiddenField2.Value= scmtime.ExecuteScalar().ToString();
min = Int32.Parse(HiddenField2.Value);
sec = Int32.Parse(HiddenField1.Value);
Timer1.Enabled = false;
}


protected void Timer1_Tick(object sender, EventArgs e)
{
sec--;
if (sec <= 0 && min <= 0)
{
Label1.Text = "زمان به پایان رسید";
Timer1.Enabled = false;
}
if (sec <= 0)
{
if (min <= 0)
{
Label1.Text = "زمان به پایان رسید";
Timer1.Enabled = false;
return;
}
sec = 60;
min--;
}
else
{
Label1.Text = "دقیقه" + min.ToString() + " ثانیه" + sec.ToString();

}

}


حالا یه مشکلی دارم و اونم مقایسه تاریخ شروع امتحان هست
یعنی وقتی کاربر روی گزینه های سوال اول کلیک کرد
زمان حال با تایمر رو چک کنه ببینه چیزی ازش گذشته یا نه

یه جورایی از رفرش صفحه و شروع دوباره تایمر جلوگیری کنم
همین

ahmad156
شنبه 28 اردیبهشت 1392, 20:28 عصر
اول اینکه کار اشتباهی هست که شما هر 1 ثانیه طرف سرور کاری انجام بشه و طرف کلاینت نشون داده بشه.
دوم اینکه شما میتونین یه viewstate برای این کار تعریف کنین که با شروع مقدار معتبری بگیره و با پایان زمان اون مقدار نامعتبر .

mjt10063
شنبه 28 اردیبهشت 1392, 20:30 عصر
میشه یه نمونه بزاید از دومی

و از اولی نظرتون هر 1 دقیقه نمایش بده چطور خوبه
یا بازم اشتباده