LinkButton בתוך gridview

LinkButton בתוך gridview

יש לי LinkButton בתוך GRIDVIEW ואני רוצה על ידי לחיצה על הLinkButton להפעיל אירוע שיקבל את הID מהDB שלי. והמצב הקים אצלי הוא
<asp:LinkButton ID="hlUrl" runat="server" OnClick='<%# ChoiceStreet((string)Eval("descr"),(Int16)Eval("main_table_code")) %>' Text = '<%# Eval("descr") %>' />​
ומה שקורה שהפונקציה מתרחשת בזמן הבנייה של הGV ואני רוצה שזה יתרחש בזמן לחיצה על הLB אבל חשוב להבהיר שאני חייבת את הID תמר
 

[eLad]

New member
תשובה

תני CommandArgument עם איזה ערך שתרצי (כולל late bind) ל-LinkButton. בנוסף, גם CommandName עם שם הפעולה. באירוע RowCommand של ה-GridView שימי switch על e.CommandName, וקבלי את e.CommandArgument כערך ששמת לאותו LinkButton שנלחץ.
 

[eLad]

New member
CommandArgument הוא object

ולכן בעזרת late binding תוכלי לשים בו כל אובייקט ולבצע לאחר מכן cast. זה יכול להיות מערך, List, Control או כל דבר אחר.
 
האם אתה מתכוון שאני צריכה

לקחת את השורה הזאת
CommandArgument='<%# Eval("descr") %>'​
ובמקום EVAL לכתוב LET BINDING?? בעצם מערך של נתונים? ואם כן, האם אתה יכול לתת לי דוגמא קטנה כיצד לממש זאת , פשוט חדש לי הLET BINDING וכיצד אני נגשת לזה מהקוד BEHIND אלפי תודות לך
 

[eLad]

New member
תיקון ותשובה

CommandArgument של GridViewCommandEventArgs (מאירוע RowCommand) הוא אכן object אך CommandArgument של LinkButton הוא string. לכן, ניתן להעביר רק string לאותו CommandArgument של הלחצן, ולחלץ אותו מתוך האירוע בעזרת e.CommandArgument. למה את צריכה יותר מ-CommandArgument אחד? בכל אופן, מאחר ומדובר ב-string פתרון אחד יהיה להפריד ערכים בעזרת delimeter. פתרון נוסף ויותר אלגנטי יהיה לתת כ-CommandArgument את ה-Container.DataItemIndex, באירוע RowCommand לבצע cast ל-e.CommandArgument ל-int, ולעבוד מול אוסף ה-DataKeys של אותו GridView. על עבודה עם DataKeys תוכלי לקרוא ב-msdn: http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.datakeys.aspx
 
תודה רבה!

תודה רבה על העזרה, היא עזרה לי מאוד, במיוחד הפתרון של ה-Container.DataItemIndex שלא הכרתי אותו בכלל. עכשיו זה עובד מצוין! תזכה למצוות!! תמר
 
למעלה