PDA

View Full Version : سوال: چطور می تونم به کنترلهای داخل یک repeater دسترسی داشته باشم.



dontspeak
دوشنبه 06 تیر 1390, 18:33 عصر
سلام
فرض کنید داخل یه repeater چهارتا کنرل button داریم چطور می تونم وقتی روی button1 کلیک میکنه کار یک رو انجام بده و وقتی روی button 2 کلیک میکنه کار دو رو انجام بده و ....؟
اصولا روش دسترسی به کنترلهای داخل repeater چطوره؟

dontspeak
سه شنبه 07 تیر 1390, 12:06 عصر
لطفا راهنمایی کنید.

alibabaei2
سه شنبه 07 تیر 1390, 16:56 عصر
Button edit = (Button)rptNotering.Items[0].FindControl("btnEdit");

dontspeak
سه شنبه 07 تیر 1390, 23:39 عصر
ممنون از جوابتون. btnEdit چیه؟ یکم میشه در مورد این کد توضیح بدید؟ مثلا منظور از Item[0] چیه؟

alibabaei2
چهارشنبه 08 تیر 1390, 15:28 عصر
btnedit آی دی دکمه ای هست که درون repeater است.
منظور از item[0] هم درواقع اولین المنتی که درون repeater هست
این جا یک button به نام edit تعریف شده و دکمه مورد نظر رو درون اون ریختیم و از این به بعد با دکمه جدید در سمت codebehind کار می کنید
ببینید این که چیزی درون repeater باشه و ما بخواهیم به طور مستقیم در code behind با آی دی به اون دسترسی پیدا کنیم مثل این میمونه که شما در یک شهر دنبال یک خونه می گردید و فقط پلاک اون خونه رو دارید. شما باید نام محل و کوچه ای که اون پلاک در اون هست رو بدونید
این جا هم باید به برنامه بفهمونید که دکمه ای که می خواهید به اون دسترسی داشته باشید درون repeater است

mehdi139004
جمعه 17 تیر 1390, 23:25 عصر
خط کد نوشته شده را کجا می باید وارد کرد؟ یعنی درون ایونت لود یا ایونت دیگری؟
و سوال دیگه اینکه ایونتهای مجاز repeater چیست؟
و چگونه می توان دو ImageButton مجزا را در آن فعال نمود؟
پیشاپیش از پاسخگویی و راهنماییهاتون کمال سپاس را دارم

dontspeak
شنبه 18 تیر 1390, 01:30 صبح
باید داخل Repeater1_ItemCommand بنویسی. event های مجازشم که توی قسمت event های این کنترل هست. توی قسمت properties در مورد سوال سوم هم چون کنترلها ID دارند پس راحت میشه دسترسی داشت. البته من دوتا کنترل یک نوع توی repeater نداشتم ولی طبیعتا باید همونجوری که بالا نوشته بشه

mehdi139004
شنبه 18 تیر 1390, 23:03 عصر
باید داخل Repeater1_ItemCommand بنویسی. event های مجازشم که توی قسمت event های این کنترل هست. توی قسمت properties در مورد سوال سوم هم چون کنترلها ID دارند پس راحت میشه دسترسی داشت. البته من دوتا کنترل یک نوع توی repeater نداشتم ولی طبیعتا باید همونجوری که بالا نوشته بشه


مرسی از راهنماییتون. اگه یه نمونه کد به صورت sample در مورد معرفی imageButton ها در itemCommand برام بنویسید واقعا ممنون میشم . مسئله دیگه ای که دارم اینه که نمیدونم چرا ایونتهای مجاز مورد نیاز در پنجره پراپرتیز نمایش داده نمیشه؟ و سوال آخر با کلیک بر روی هریک از ImageButton ها ایونتی اجرا شده و بر اثر آن خطایی رخ می دهد حال آنکه من نمی دونم چه ایونتی رخ می ده و چطور و کجا می تونم برای ایونت رخ داده کد بنویسم
باز هم از اینکه وقت می ذارید و من رو راهنمایی می کنید کمال تشکر را دارم

dontspeak
یک شنبه 19 تیر 1390, 00:23 صبح
سلام دوست عزیز و از لطف شما هم ممنونم
من این شکلی که شما می خواید استفاده نکردم کدی که من استفاده کردم این بود


protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
string strCart = string.Empty;
string strObjectId = ((Button)e.CommandSource).ToolTip.ToString();
if (Session["Cart"] == null)
strCart = strObjectId;
else
strCart = Session["Cart"].ToString() + ", " + strObjectId;
Session["Cart"] = strCart;
Label4.Text = Session["Cart"].ToString();
}



<asp:Repeater ID="Repeater1" runat="server" DataSourceID="LinqDataSource1"
onitemcommand="Repeater1_ItemCommand">
<ItemTemplate>
<div style="border-style: solid; margin: 10px; width: 120px; height: 165px; float: left; text-align: center;">
<asp:Image ID="Image1" runat="server" Width="100" Height="100" ImageUrl='<%#Eval("ObjectPic")%>' ToolTip='<%#Eval("ObjectDiscription")%>' /><br />
<asp:Label ID="Label1" runat="server" Text='<%#Eval("ObjectName")%>'></asp:Label><br />
<asp:Label ID="Label2" runat="server" Text='<%#Eval("ObjectPrice")%>'></asp:Label><br />
<asp:Button ID="Button1" runat="server" Text="افزودن به سبد خرید" ToolTip='<%#Eval("ObjectId")%>' />
</div>
</ItemTemplate>
</asp:Repeater>

که برای بدست آوردن موارد انتخابی در ریپیتر بود که اول اومدم tooltip اون کنترل رو خوندم و بعد اونو توی یه session قرار دادم. که این کدم حالت آزمایشی بود و در وبسایت ازش استفاده نکردم
در مورد event ها هم که باید بگم کنترلهایی که داخل ریپیتر هستند event هاشون رو نمیشه به اون شکلی که میگید دید. برید توی قسمت source از اوجا می تونید با کد event به کنترلتون اضافه کنید. برای سوال بعدی شما هم که طبیعتا رویداد کلیک رخ داده. که طبق همون محیط source که بالا گفتم می تونید مشکلتون رو حل کنید. البته خودم تا بحال با event های داخل کنترل repeater کار نکردم. امیدوارم شما کارتون به سرانجام برسه و مارو از راهی که رفتید بهرمند کنید
موفق باشید

mehdi139004
یک شنبه 19 تیر 1390, 22:46 عصر
با سلام و با تشکر از دوست خوبم با اسم مستعار dontspeak به خاطر وقتی که برای راهنماییهاشون.
بنا به احساس وظیفه ای که این دوست خوب بر روی دوشم گذاشتند بر خود واجب می دونم که حاصل تجربه ای رو که به تازگی به دست آوردم را با همگان share کنم:

راستش مشکلی که من داشتم استفاده از ImageButton ها درون repeater بود که به هیچ عنوان نمی تونستم ازش استفاده کنم و با کلیک بر روی اون دچار error می شدم؛ حال پس از گشت و گذار فراوان در دنیای وب و با مشورت با دوستان برنامه نویس خوبی که دارم (همچون دوست خوبم "dontspeak" فهمیدم که بااضافه کردن کد زیر در web.config این مشکل من حل می شه:
<pages enableEventValidation="false">
<controls

امیدوارم این تجربه من بتونه برای دیگران هم مفید واقع بشه

mehdi139004
یک شنبه 19 تیر 1390, 22:50 عصر
حال مشکلی که پیش می یاد اینه که نمی دونم با false کردن مقدار enableEventValidation چه مسائلی ممکنه پیش بیاد و اصلا کاربرد این پراپرتی چیه؟