PDA

View Full Version : سوال: یک مشکل در دیتا گرید



viper2009
چهارشنبه 08 مهر 1388, 14:12 عصر
سلام
من یک دیتا گرید دارم یکی از فیلدهاش رو Button گذاشتم چطوری می تونم از رویدادش استفاده کنم
می خوام مثلاً وقتی دکمه را کلیک می کنم یک فرم باز بشه

یا همین کار رو با LinkLable انجام بدم

با تشکر.

anooshiran
چهارشنبه 08 مهر 1388, 17:05 عصر
سلام دوست عزيز

در رويداهاي click , cellclick,mouseclick با كد زير ميتواني متوجه شوي كه click از جانب چه نوعي از ستون دريافت شده.



If DataGridView1.Columns(e.ColumnIndex).GetType.Name = "DataGridViewButtonColumn"Then
MsgBox("")
EndIf

viper2009
چهارشنبه 08 مهر 1388, 21:58 عصر
سلام دوست عزيز

در رويداهاي click , cellclick,mouseclick با كد زير ميتواني متوجه شوي كه click از جانب چه نوعي از ستون دريافت شده.



If DataGridView1.Columns(e.ColumnIndex).GetType.Name = "DataGridViewButtonColumn"Then
MsgBox("")
EndIf



سلام مرصی
برای LinkLabe هم می شه؟ و یک سوال دیگه در مورد Button اینکه وقتی Header ش را می نویسم یعنی بهش اسم می دهم روی دکمه نشان نمی ده
ولی وقتی کد می نویسم نشون می ده؟ مشکل کجاست؟

anooshiran
پنج شنبه 09 مهر 1388, 02:50 صبح
سلام دوست عزيز

در مورد سئوال اول




Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _
Handles DataGridView1.CellClick
Select Case DataGridView1.Columns(e.ColumnIndex).GetType.Name
Case "DataGridViewButtonColumn"
MsgBox("DataGridViewButtonColumn")
Case "DataGridViewLinkColumn"
MsgBox("DataGridViewLinkColumn")
Case "DataGridViewTextBoxColumn"
MsgBox("DataGridViewTextBoxColumn")
Case "DataGridViewCheckBoxColumn"
MsgBox("DataGridViewCheckBoxColumn")
Case "DataGridViewImageColumn"
MsgBox("DataGridViewImageColumn")
Case "DataGridViewComboBoxColumn"
MsgBox("DataGridViewComboBoxColumn")
End Select

End Sub


واما سئوال دوم :

اگر از طريق design كنترل datagridview را به form اضافه ميكني به تصوير همراه توجه كن . شما بايد خاصيت Text را معادل متني قرار دهي كه ميخواهي در روي button نقش ببندد . البته بايد خاصيت UseColumnTextForButtonValue را نيز معادل true قراردهي.

ذكر اين نكته نيز لازم است كه اين متن در new row روي button نقش نمي بندد.

حال اگر بخواهي از طريق كد اين كار را انجام دهي به نمونه كد زير توجه كن




With Me.Column1
.HeaderText = "NewForm"
.Text = "Push Me"
.UseColumnTextForButtonValue = True
.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells
.FlatStyle = FlatStyle.Standard
.CellTemplate.Style.BackColor = Color.Honeydew
End With

viper2009
جمعه 10 مهر 1388, 01:53 صبح
سلام دوست عزيز

در رويداهاي click , cellclick,mouseclick با كد زير ميتواني متوجه شوي كه click از جانب چه نوعي از ستون دريافت شده.



If DataGridView1.Columns(e.ColumnIndex).GetType.Name = "DataGridViewButtonColumn"Then
MsgBox("")
EndIf



از همین کد استفاده کردم
و حالا در فرم لودم یک TextBox را Binding کردم که وقتی روی دیتا گرید کلیک می شود این خطا رخ می ده
ضمناً این خطا با کلیک روی سلولها رخ نمی ده روی حاشیه گرید رخ می دهد.

anooshiran
جمعه 10 مهر 1388, 10:32 صبح
سلام دوست عزيز

كدت را به شكل زير اصلاح كن




If e.ColumnIndex > -1 And e.RowIndex > -1 Then
If DataGridView1.Columns(e.ColumnIndex).GetType.Name = "DataGridViewButtonColumn" Then
MsgBox("")
End If
End If

viper2009
جمعه 10 مهر 1388, 11:34 صبح
سلام دوست عزيز

كدت را به شكل زير اصلاح كن




If e.ColumnIndex > -1 And e.RowIndex > -1 Then
If DataGridView1.Columns(e.ColumnIndex).GetType.Name = "DataGridViewButtonColumn"Then
MsgBox("")
EndIf
EndIf



خیلی ممنون
میشه توضیحش را هم بدید که این شرط چکار می کنه؟

anooshiran
جمعه 10 مهر 1388, 17:00 عصر
سلام دوست عزيز

هر سطر datagridview يك rowindex داره همچنين HeaderRow كه headerIndex معادل 1- است.
و هم چنين هر ستون يك columnindex داره همچنين RowColumn كه ‍‍ColumnIndex آن نيز 1- است.

بنابر اين وقتي شما روي هدر ها كليك كنيد e.CoulmIndex يا e.RowIndex عدد 1- را بر مي گرداند.

ابن كد كنترل مي كند كه آيا شما روي HeaderRow يا RowColumn نيز click كرده ايد