PDA

View Full Version : دریافت اطلاعات یک فیلد از گریدوی با کلیک روی ان سطر



pedram_ns
جمعه 26 آذر 1389, 16:57 عصر
با سلام
می دونم که ممکنه تکراری باشه ولی لطفا راهنمایی بفرمایید:

یک گریدویو دارم که به جدولی مرتبطه که یک id به عنوان کلید اصلی داره چطور با کلیک روی هر سطر id اون سطر رو بدست بیارم تا با این id به حذف و یا ویرایش اطلاعات درون گریدویو بپردازم.

با ایجاد یک دیتاست و ارتباط اون با گریدویو و کنترل های تکس باکس می شه این کار رو کرد ولی می خوام با کد نویسی انجام بدم.

خیلی ممنون

ali_najari
جمعه 26 آذر 1389, 17:56 عصر
دوست عزیز میتونید از کد زیر استفاده کنید:


Textbox1.text =Datagridview1.Rows(Datagridview1.selectedrows.ite m(0).Index).cells(1).value.toString

pedram_ns
جمعه 26 آذر 1389, 18:47 عصر
اقا علی ممنون از لطفتون.
البته باید بگم که در کدتون item درست هست نه items.
خوب این کار می کنه وقتی که روی ستون سمت راست گریدویو کلیک می کنم. ولی وقتی روی فیلد های گریدویو کلیک می کنم این ارور رو می ده.

index was out of range. must be non-negative and less than the size of the collection.
parameter name:index

باید بگم من کدها رو در رویداد DataGridView1_CellClick می نویسم

ali_najari
جمعه 26 آذر 1389, 22:39 عصر
دوست عزیز من این مشکل رو بررسی میکنم و حتما کد صحیح رو براتون میزارم!

ali_najari
شنبه 27 آذر 1389, 14:21 عصر
دوست عزيز اين هم كدي كه بهتون قول داده بودم:
(شرمنده من ديروز سيستم نداشتم و ذهني واستون نوشتم ولي اين كد رو با خود برنامه تست كردم)


Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
If e.RowIndex >= 0 AndAlso e.ColumnIndex >= 0 Then
TextBox1.Text = DataGridView1.Rows(e.RowIndex).Cells(1).Value
End If
End Sub

pedram_ns
شنبه 27 آذر 1389, 15:44 عصر
اقا علی ممنون از پیگیریتون.

وقتی کد شما رو می نویسم مشکل حل می شه فقط با کلیک کردن روی ستون سمت راست گریدویو (اگر راست چین کرده باشید) جایی که با انتخابش یک فلش ظاهر می شه دیگه اطلاعات پیدا نمی شه و فقط با کلیک روی خود اطلاعات هر سطر کار می کنه برای اینکه درست بشه کدتون رو به این صورت تغییر دادم :


If e.RowIndex >= 0 Then
TextBox1.Text = DataGridView1.Rows(e.RowIndex).Cells(1).Value
End Ifمی شه بفرمایید چرا در کدتون به اون صورت نوشتید.

مسئله دوم:
من در همون صفحه یک دکمه دارم برای حذف رکورد در اون دکمه ابتدا با کد زیر id ستون کلیک شده رو می گیرم و سپس بر اساس اون id رکورد رو حذف می کنم


Dim id As Integer = DataGridView1.Rows(DataGridView1.SelectedRows.Item (0).Index).Cells(0).Value.ToString

مشکل اینه که اگر روی ستون کناری گریدویو کلیک کنم کار می کنه ولی اگر روی اطلاعات یک ردیف کلیک کنم کار نمی کنه این کد رو باید چکار کنم؟

ali_najari
یک شنبه 28 آذر 1389, 01:55 صبح
دوست عزيز فقط كافيه كه شما يه متغير در بالاي كدهاتون تعريف كنيد به اسم Row و هنگامي كه روي سطر كليك ميكنيد مقدار اون متغير (Row) را معادل با e.rowindex قرار دهيد!

اينطوري مشكل شما هم حل خواهد شد

pedram_ns
یک شنبه 28 آذر 1389, 09:55 صبح
کد که شما می فرمایید:


e.rowindex

در رویداد CellClick گریدویو کار می کنه ولی من باید در رویداد دکمه(دکمه حذف) بنویسم به این صورت که کاربر روی یک سطر از گرید کلیک می کنه و دکمه حذف رو می زنه در روداد دکمه id اون سطر رو با کد زیر می گیرم و اون سطر رو حذف می کنم
این کد (همون کدی که اول دادید)


Dim id As Integer = DataGridView1.Rows(DataGridView1.SelectedRows.Item (0).Index).Cells(0).Value.ToString

کار می کنه ولی وقتی کاربر روی ستون کناری گرید کلیک کنه ولی می خوام اگر روی هر کدوم از اطلاعات یک سطر کلیک کرد باز هم این کد کار کنه
لطفا اگر راهنمایی کردید کدش رو بذارید تا دقیق بدونم چکار کنم.
باز هم ممنون

ali_najari
یک شنبه 28 آذر 1389, 15:48 عصر
دوست عزيز من خدمتتون گفتم كه شما يه متغيير در بالاي كدهاتون تعريف كنيد و هنگام cellclick مقدار آن را برابر با e.rowindex قرار دهيد!

اگر ميدونيد نياز هست تا يه نمونه واستون آماده كنم تا متوجه بشيد كه منظور من چي هست!

pedram_ns
یک شنبه 28 آذر 1389, 16:31 عصر
متاسفانه متوجه نمی شم.
اگر یک نمونه معرفی کنید یا خودتون بذارید شرمنده می کنید.