PDA

View Full Version : پیدا کردن مقدار سطر انتخاب شده در دیتاگرید



iekrang
شنبه 20 خرداد 1385, 10:03 صبح
یکی از ستونهای دیتاگرید من چک باکس هست.میخواهم مقدار اون سطری که انتخاب شده رو به دست بیارم.همیشه با استفاده از دستور زیر این کار رو انجام میدم:


dg.DataKeys[(int)di.ItemIndex].ToString()

نکته اینجاست که الان دیتاگریدم هیچ key نداره.آیا این کار امکان پذیر هست که من بدون داشتن کی مقدار سطر انتخاب شده رو به دست بیارم؟
(دیتا سورس دیتاگریدم هم یک DataTable است)
ممنون میشم اگر راهنماییم کنید.

white fox
شنبه 20 خرداد 1385, 10:23 صبح
البته من نمیدونم چک باکس رو برای چه کاری لازم دارید اما برای اعمالی مثل Delete یا Update شماره سطر خیلی به درد نمیخوره مخصوصا اگر Paging در دیتاگرید فعال باشه..
بهتره همیشه یکی از فیلدهای دیتابیستون که کلید اصلی هست رو در گرید قرار بدید حتی به صورت مخفی که کسی نبینه........
بعد چک کنید که اگر چک باکس علامت خورده بود اون فیلد مخفی رو بخونه که برای همون سطر خونده میشه و عملتون رو بر اساس اون فیلد انجام بدید..مشابه زیر:



For Each DGI As DataGridItem In dtgList.Items
chk_Remove = CType(DGI.FindControl("chk_Select"), CheckBox)
_pic = DGI.FindControl("lbl_PicAdd").Controls(0) 'save pic adrress
If chk_Remove.Checked Then
boolCheck = True
DBLC = DGI.FindControl("lbl_Id").Controls(0)
strIDs += DBLC.Text & ","
_picsName.Add(_pic.Text)
End If
Next

cmd1.CommandText = "DELETE FROM [Table1] WHERE IDNO IN (" & Trim(strIDs.Substring(0, strIDs.LastIndexOf(","))) & ")"

iekrang
شنبه 20 خرداد 1385, 11:24 صبح
بی نهایت ممنون از توجهتون.
ولی لازمه من یکم بیشتر توضیح بدم.دیتاگرید من شامل دو ستون هست :چک باکس و یه فیلد توضیح(حالا فرض کنید نام فرد)
که بعد از انتخاب تعدادی از این افراد دکمه next زده میشه و من سطرهای انتخاب شده رو نیاز دارم توی مراحل بعدی.
نمیتونم از یه ID استفاده کنم چون این فیلد اطلاعات از یه فایل xml پر میشه و هیچ فیلدی برای این کار نداره.
حالا با این وجود، آیا راهی هست برای پیداکردن سطرهای انتخاب شده؟

white fox
شنبه 20 خرداد 1385, 11:53 صبح
این کد رو امتحان کنید:



For Each DGI As DataGridItem In dtgListGames.Items
chk_Remove = CType(DGI.FindControl("chk_Select"), CheckBox)
Dim i As ArrayList
If chk_Remove.Checked Then
i.Add(DGI.DataSetIndex)
End If
Next


اینطوری شماره خطوط رو میتونید در یک آرایه داشته باشید...امیدوارم کارتون رو راه بندازه

iekrang
شنبه 20 خرداد 1385, 14:04 عصر
ممنونم از کمکتون.
کارم این طوری راه افتاد که به datatable که داشتم یه ستون به عنوان ID دستی اضافه کردم.
مرسی.