PDA

نسخه کامل مشاهده نسخه کامل : کمک (در مورد ایندکس)



AghaMoez
30-07-2009, 10:59
:41:سلام

من تو ASP.Net به زبان #C یک برنامه نوشتم که به تعداد رکوردهام checkbox رو موقع اجرا ایجاد(لود) کردم.
بعد حالا میخوام بفهمم که کدوم یکی از checkboxهام تیک خورده یا نخورده. چون تو .net هر شی اینکس نداره.
کمک کنین.
:10::10::10::10:

AghaMoez
01-08-2009, 07:35
دمتون گرم .
نیاز دارم
راهنمایی کنید.
:2:

_H2_
04-08-2009, 08:36
سلام
خوب این checkbox را چطور اضافه کرده اید؟
فیلد datagrid است یا ستی اضافه شده؟

AghaMoez
04-08-2009, 10:14
مثلا من با دستور checkbox ch= new checkbox() یک شی بوجود آوردم
بعد در یک رویداد دیگه ای میخوام بگم که اگر اون شی تیک خورده فلان کار رو بکن.

یک سوال دیگه هم دارم
توی ASP به زبان #C میخوام از رویداد Lost focus استفاده کنم که نداره یا در textchange که اصلا وارد آن نمیشه تا دستوراتش رو اجرا کنه
چکار کنم؟:19::19:

_H2_
06-08-2009, 15:01
سلام

مثلا من با دستور checkbox ch= new checkbox() یک شی بوجود آوردم
بعد در یک رویداد دیگه ای میخوام بگم که اگر اون شی تیک خورده فلان کار رو بکن.

من نمیدانم برای چه دستی new کرده اید؟؟؟ این کار معمول نیست و احتمالاض هر کاری که میخواهید انجام دهید باز هم راه ساده تری دارد...
ولی اگر دستی new میکنید کدی شبیه این لازم دارید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


توی ASP به زبان #C میخوام از رویداد Lost focus استفاده کنم که نداره یا در textchange که اصلا وارد آن نمیشه تا دستوراتش رو اجرا کنه
چکار کنم؟
شما انگار چندان با اصول برنامه نویسی تحت وب آشنا نیستید ...
همچین رویدادی را در کدهای سمت سرور مدیریت نمیکنند
فرآیند ارسال اطلاعات به سرور submit گفته میشود که ممکن ایت چند ده ثانیه هم طول بکشد و طی ان نمودار درصد انجام کار هم در پایین مرور گر نشان داده خواهد شد.
(مثل زمانی که دکمه ای را کلیک میکنید)

نتیجتاً چندان عاقلانه نیست که با رویدادی مثل texchange برای هر فشار دکمه کیبورد یک بار اطلاعات به سرور ارسال شود!!!

راه حل:
1) اگر عمل فوق را برای اعتبار سنجی ورودی میخواهید، از امکانات اعتبار سنجی خود Asp.net استفاده کنید.

2) در غیر این صورت دستورات خود را به زبان javascript بنویسید که در کلاینت و در خود مرورگر بازدید کننده اجرا میشود و نتیجتاً به راحتی میتواند پاسخگویی تغییرات مدام یک Textbox باشد و اصول کار هم همین است که از کدهای سمت کلاینت برای این کار استفاده کنید.

3) راه نهایی برای اجرای کدهای سرور در این مواقع فقط استفاده از Ajax است که اجازه میدهد بدون submit مشخص بتوان به سرور متصل شد.

AghaMoez
13-08-2009, 14:32
مرسي از اينكه جواب دادي.
در مورد سوال دومم . javascript , شي هاي روي (default.aspx) يا همون page رو كه نميشناسه؟!
چجوري به اون شي ها دسترسي پيدا كنم؟

_H2_
13-08-2009, 21:35
سلام
یا کنترلرهای شما runat-server است یا نیست
اگر نیست مثل روشهای عادی میتوانید به آنها در javascript ارجاع دهید و اگر runat-server است، فقط کافی است id کنترلر را در کد سمت سرور با خصیصه ClientID محاسبه و برای کد سمت کلاینت javascript پر کنید.
(چون id کنترلر سمت سرور دست شما است ولی asp.net خودکار id منحصر بفردی برای سمت کلاینت آن اختصاص میدهد که با ClientID میتوانید بخوانیدش)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

AghaMoez
15-08-2009, 07:29
داداش من يك كنترل از قسمت Standard جعبه ابزار رو استفاده كردم . به خاطر همين ميگم javascript نميشناسه.
شما از كنترل هاي بخش HTML استفاده كرديد و اگر من از اونها استفاده كنم اون وقت تو قسمت كد نويسي ASP به اون ها دسترسي ندارم . پس من ميخوام هم تو كد HTML به اون كنترل دسترسي داشته باشم و هم تو كد ASP.

_H2_
15-08-2009, 16:15
سلام
لطفاً به مثال قبلی دقت بیشتری کنید ...
text1 یک کنترلر استاندارد html است که با id معمولی اش در جاوااسکریپت ارجاع داده شده ولی
TextBox1 یک کنترلر استاندارد asp.net است (از همان هایی که شمال میگویید) و با خصیصه ClientID در جاوااسکریپت استفاده شده.

به مثال قبلی دقت کنید.
موفق باشید.

AghaMoez
17-08-2009, 10:42
راجع به اين كد
document.getElementById('<%= this.TextBox1.ClientID %>').value
مي خواستم مشابه اين كد , دستور مربوط به دستور ASP زير رو بديد كه يك شي Radio button list است.
if (RadioButton1.Items[2].Selected == true)
s=RadioButton1.Items[2].Text;
منظورم اينه كه ميخوام تو javascript از كد بالا استفاده كنم و ClientID رو بگيرم.
لطفا معادل اون رو كامل بنويسيد.

AghaMoez
17-08-2009, 13:26
كد زير هم Error on page ميده
document.getElementById('<%= this.Panel1.ClientID %>').visible=true
لطفا صحيح اون رو بديد.
با تشكر

_H2_
17-08-2009, 23:53
سلام


مي خواستم مشابه اين كد , دستور مربوط به دستور ASP زير رو بديد كه يك شي Radio button list است.

در مورد دکمه های رادیویی طبق استانداردهای html و javascript (که ربطی به asp.net هم ندارد) شما باید از خصیصه checked استفاده کنید، مثلاً

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


document.getElementById('<%= this.Panel1.ClientID %>').visible=true

این کد احتمالاً دو مشکل دارد!
---> اول انکه شاید Visible را در سمت سرور False کرده باشید

تغییر visible یک کنترلر asp.net ای در سرور کلاً معنی دیگری دارد.
وقتی visible=false را به یک کنترلر سروری اعمال میکنید، آن کنترلر کلاً render نمیشود و html اش به مرورگر کلاینت ارسال نمیشود.
یعنی اصلاً html همچین کنترلری وجود نخواهد داشت.

اگر میخواهید کنترلر render شود و وجود داشته باشد ولی مخفی باشد، باید Visible کنترلر در سرور True باشد و ...
- با javascript آن را نامرئی کنید یا
- css ای حاوی display: none به آن اضافه کنید یا
- به صورت دستی و با کد نویسی display: none را برای render خصیصه style اضافه کنید.

--->دوم انکه اصلاً این دستور مرئی و نمایان کردن در javascript نیست!

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

به نظرم کمی باید معلومات html و javascript خودتان را با مطالعه چند کتاب تقویت کنید.

AghaMoez
18-08-2009, 08:23
آقا دست شما درد نكنه خيلي آقايي
مشكل دومم حل شد.
در مورد document.getElementById('<%= this.RadioButton1.ClientID %>').checked = "checked";
بايد بگم كه radiobuttonlist ايندكسي هستش و شما در كد بالا اون ايندكس رو قرار ندادي. شايد شما منظورم رو متوجه نشدي البته قبول دارم كه اطلاعاتم خيلي كمه. ولي بازم ممنونم كه مشكلاتم رو حل ميكني.