PDA

View Full Version : مقدار دهی به خاصیت value چک باکس از بانک



emad_67
دوشنبه 27 آبان 1387, 18:01 عصر
سلام
من توی gridview یک ستون دارم که چک باکس هستند و auto postback این ها هم فعال هست. برای اینکه بفهمم چک باکس کدوم سطر کلیک شده من میخوام ID اون سطر رو تو value چک باکس ذخیره کنم. بنابراین توی رویداد RowDataBound اینجوری نوشتم:


private void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
IDataRecord record = e.Row.DataItem as IDataRecord;
CheckBox ChkGridPublish = e.Row.FindControl("ChkGridPublish") as CheckBox;
if (record == null || ChkGridPublish == null)
return;
ChkGridPublish.Attributes.Add("value", record["ID"].ToString());
}
ولی اصلا خاصیت value توی کد html ظاهر نمیشه:


<input id="ctl00_MainContent_GridView1_ctl06_ChkGridPublish" type="checkbox" name="ctl00$MainContent$GridView1$ctl06$ChkGridPublish" checked="checked" onclick="javascript:setTimeout('__doPostBack(\'ctl00$MainCo ntent$GridView1$ctl06$ChkGridPublish\',\'\')', 0)" />
میخواستم ببینم چیکارش باید بکنم؟
با تشکر

mahdi_farhani
دوشنبه 27 آبان 1387, 18:48 عصر
یک کار خیلی ساده میتونی انجام بدی ، یک HidenField برای هر سطرت در نظر بگیر و اونو با ID بایند کن.
کجا میخواهی ازش استفاده کنی مهمه !!!
اگر میخواهی سرور ساید باش کار کنی همون موقعی که باش کار داری ، اگر فعال بود DataKey اون Row رو بخون.دیگه احتیاجی به Hidenfield هم نداری
ولی اگر کلاینت ساید باش کار داری همون Hidenfieldکارتو راه میندازه

emad_67
دوشنبه 27 آبان 1387, 23:45 عصر
میخوام server side باهاش کار کنم.
در واقع من برای هر آیتم یه چک باکس میخوام بزارم که نشون دهنده publish بودن اون آیتم هست و autopostback رو هم برای این true کردم که کاربر خیلی راحت بتونه با تیک زدن یا حذف تیک اونو publish و unpublish کنه. این کد اون ستون از grid هست که چک باکس رو توش تعریف کردم:


<asp:TemplateField>
<HeaderTemplate>
انتشار
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="ChkGridPublish" runat="server" Checked='<%# Eval("Published") %>' AutoPostBack="true" OnCheckedChanged="ChkGridPublish_ChekcChanged" />
</ItemTemplate>
</asp:TemplateField>
برای همه چک باکس ها فقط یک تابع فراخوانی میشه و من قصد داشتم که از طریق اون تابع به چک باکس و ID اون سطر دست پیدا کنم. حالا اگر hiden field هم بزارم بازم نمیتونم توی رویداد ChekcChanged به ID مطلب دست پیدا کنم. راه دیگه ای نیست؟ اصلا چرا نمیشه به value مقدار داد؟

mahdi_farhani
دوشنبه 27 آبان 1387, 23:53 عصر
اصلاً چرا Autopostback فعال کردی ، شما یه دکمه تو Footer بزار برای اونهایی که تیک خرده ، عملیات مورد نظر رو انجام بده ، اینطوری بهتره که. مثلاً میخواهد 3 تا آیتم رو Publish کنه حالا سه بار باید منتظر بمونه ، با این کار کاربر رو از شر Postback اضافی نجات میدی

emad_67
دوشنبه 27 آبان 1387, 23:59 عصر
خوب این چیزی که شما میگی وجود داره. اینو علاوه بر اون میخوام بزارم:لبخند:
حالا کلا آیا راهی به نظر شما میرسه؟ ممکنه جاهای دیگه هم باز به این مشکل بر بخورم به نوع دیگه ای. البته میشه به جای checkbox از یک image استفاده کرد و با query string آی دی رو پاس داد ولی فعلا نمیخوام از این روش استفاده کنم.

mahdi_farhani
سه شنبه 28 آبان 1387, 00:22 صبح
ما که هرچی با این Checkbox ور رفتم چیزی پیدا نکردم . راهی دیگه ای باید انتخاب کنی.