PDA

View Full Version : autorefresh در asp.net (اتورفرش تکست باکس)



sina42048
سه شنبه 15 فروردین 1391, 20:02 عصر
درود بر همه برنامه نویسان

یه سوال ! ؟ من چطوری میتونم تو asp.net ، که یک TextBox دارم ، هر 5 ثانیه یه بار به صورت خودکار رفرش بشه !؟

ممنون میشم زود جواب بدین !

با تشکر

raziee
چهارشنبه 16 فروردین 1391, 09:46 صبح
با سلام.
منظورتون از Refresh شدن چیست؟
با این فرض که منظورتون گرفتن مقداری از سرور و نمایش اون در تکس باکس باشه (که در این صورت چرا TextBox؟) شما باید بوسیله ی AJAX اون مقدار رو از سرور دریافت کنید و در TextBox مربوطه جایگزاری کنید.
راه های زیادی برای پیاده سازی این مورد هست.
اما پشنهاد من گرفتن مقدار به صورت JSON هست.
JQuery یک Framework بر پایه JavaScript هست که متد های متعددی رو برای کار با AJAX و JSON فراهم کرده.
شما میتونید در سمت سرور از یک Handler و یا Webservice استفاده کنید و درخواستتون رو به سرور بفرستید.
شاد باشید

sina42048
چهارشنبه 16 فروردین 1391, 17:10 عصر
سلام دوست عزیز .... به این لینک (http://4speed.somee.com/chat/) برین !

وقتی یک پیامی فرستاده میشه تو textbox نمایش داده میشه ولی تا زمانیکه فرد دیگه ای پیام جدیدی نفرسته ، پیام های قبلی به اون فرد نشون داده نمیشه !

sina42048
پنج شنبه 17 فروردین 1391, 19:31 عصر
کسی نمیخواد جواب من بدبخت رو بده ؟!

لااقل یه سورس خیلی ساده ازش بزارین !

hamid_shrk
پنج شنبه 17 فروردین 1391, 19:37 عصر
اینکه اتو رفرش نداره با اون صورتی که من دیدم.
این فقط وقتی شما دکمه ثبت رو میزنی میره از دیتابیس حرفهای نفرات قبلی رو میخونه و تو textbox نمایش میده همه رو، خیلی کار ساده ای انجام میده ، انقدر موضوع رو پیچیده نکنید واسه خودتون.

sina42048
پنج شنبه 17 فروردین 1391, 19:39 عصر
من اصلاً از دیتابیس استفاده نکردم فقط از session و application استفاده کردم !

وقتی شما یه پیام بفرستین بقیه پیام ها نمایش داده میشه ، ولی وقتی من همون لحظه یا چند دقیقه بعد پیام جدید میفرستم دیگه به کس دیگه نمایش داده نمیشه ! و باید طرف دیگه یه پایم جدید بفرسته تا پیام منو ببینه !

sina42048
پنج شنبه 17 فروردین 1391, 19:44 عصر
کسی جواب گوی ما نیست

خوب لااقل یه سورس بزارین که خیلی ساده باشه !

hamid_shrk
پنج شنبه 17 فروردین 1391, 20:02 عصر
سشن جوابگو نیست و شما باید از دیتابیس استفاده کنید .


وقتی شما یه پیام بفرستین بقیه پیام ها نمایش داده میشه ، ولی وقتی من همون لحظه یا چند دقیقه بعد پیام جدید میفرستم دیگه به کس دیگه نمایش داده نمیشه ! و باید طرف دیگه یه پایم جدید بفرسته تا پیام منو ببینه !

بصورت پیش فرض تمام تکس باکس ها خالی هستن و بعد از کلیک رو دکمه دیتا رو از دیتا بیس میخونه و تو تکس باکس نشون میده.
ببینید شما یک table با دو فیلد نام و پیغام بسازید.
بعد از اینکه کلیک شد تمام رکوردها رو از دیتا بیستون بخونید و به تکس باکس اضافه کنید. به همون ترتیبی که اون سایت این کار رو میکنه

sina42048
پنج شنبه 17 فروردین 1391, 21:39 عصر
خوب ، مشکل قبلی حل شد ، البته بدون استفاده از بانک اطلاعاتی

حالا یه سوال : اگه بخوام یه button بعد از هر 5 ثانیه خودکار کلیک بشه(منظورم دستورات اون انجام بشه) چیکار باید بکنم ؟

با تشکر

hamid_shrk
پنج شنبه 17 فروردین 1391, 21:56 عصر
برای اینکار از کد زیر استفاده کنید :


<asp:Timer ID="Timer1" OnTick="Timer1_Tick" runat="server" Interval="5000">
</asp:Timer>
<asp:UpdatePanel ID="UpdPanelRefresh" UpdateMode="Conditional" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
</Triggers>
<ContentTemplate>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
و تو کد بیهاین :

protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = DateTime.Now.TimeOfDay.Seconds.ToString();
}
protected void Timer1_Tick(object sender, EventArgs e)
{
Label1.Text = DateTime.Now.TimeOfDay.Seconds.ToString();
}

تو مدت زمانی که تعیین کردید عملیات داخل Timer1_Tick نوشتید اجرا میشن.
کد بالا هر 5 ثانیه متن لیبل رو عوض میکنه.

sina42048
پنج شنبه 17 فروردین 1391, 22:14 عصر
یه مشکل ، کد بالا رو وارد کردم هنگام اجرا این ارور نشون میده


The control with ID 'UpdPanelRefresh' requires a ScriptManager on the page. The ScriptManager must appear before any controls that need it.

hamid_shrk
پنج شنبه 17 فروردین 1391, 22:43 عصر
برای استفاده از ajax باید از script manager استفاده کنید.
این کد رو تو html تون بذارید :


<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>