#vb.net
Вопрос:
Я использую Visual Studio 2017, SQL Server 2016. Проблема в том, что я добавил столбец флажка в свой DataGridView, но он повторяется 5 раз
Я сделал код по ссылке ниже. Это дает результат, но почему он повторяет столбец флажка? Я вызываю функцию в ComboBox SelectedIndexChanged, так есть ли с ней какие-либо проблемы? Что мне делать?
Private Sub GetRecords()
Dim query As String = " select distinct t.CPTCode,t.ServiceName,t.DepartmentName,t.SubName,t.Name as Company,t.bedcatename,t.ServiceCharge "
query = " from tariffpsri t "
query = " inner join psrirate p on t.Validid= p.Validid "
query = " inner join ItemOfService i on t.ServiceId = i.ServiceId "
query = " where t.DepartmentName= '" ComboBox2.Text "' "
query = " And t.companyid = 1 And i.Active = 1 "
query = " And Convert(varchar, p.ValidFrom, 111) = '" ComboBox1.Text "' "
query = " order by CPTCode "
conn = GetConnect()
conn.Open()
Using cmd As SqlCommand = New SqlCommand(query, conn)
'MsgBox(query)
cmd.CommandType = CommandType.Text
Using sda As SqlDataAdapter = New SqlDataAdapter(cmd)
Using ds As New DataSet1
Using dt As DataTable = New DataTable()
sda.Fill(dt)
DataGridView1.DataSource = dt
End Using
End Using
End Using
End Using
conn.Close()
Dim headerCellLocation As Point = Me.DataGridView1.GetCellDisplayRectangle(0, -1, True).Location
'Place the Header CheckBox in the Location of the Header Cell.
headerCheckBox.Location = New Point(headerCellLocation.X 8, headerCellLocation.Y 2)
headerCheckBox.BackColor = Color.White
headerCheckBox.Size = New Size(18, 18)
'Assign Click event to the Header CheckBox.
AddHandler headerCheckBox.Click, AddressOf HeaderCheckBox_Clicked
DataGridView1.Controls.Add(headerCheckBox)
'Add a CheckBox Column to the DataGridView at the first position.
Dim checkBoxColumn As DataGridViewCheckBoxColumn = New DataGridViewCheckBoxColumn()
checkBoxColumn.HeaderText = ""
checkBoxColumn.Width = 30
checkBoxColumn.Name = "checkBoxColumn"
DataGridView1.Columns.Insert(0, checkBoxColumn)
'DataGridView1.Columns.Add(checkBoxColumn)
'Assign Click event to the DataGridView Cell.
AddHandler DataGridView1.CellContentClick, AddressOf DataGridView_CellClick
End Sub
Private Sub HeaderCheckBox_Clicked(ByVal sender As Object, ByVal e As EventArgs)
'Necessary to end the edit mode of the Cell.
DataGridView1.EndEdit()
'Loop and check and uncheck all row CheckBoxes based on Header Cell CheckBox.
For Each row As DataGridViewRow In DataGridView1.Rows
Dim checkBox As DataGridViewCheckBoxCell = (TryCast(row.Cells("checkBoxColumn"), DataGridViewCheckBoxCell))
checkBox.Value = headerCheckBox.Checked
Next
End Sub
Private Sub DataGridView_CellClick(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs)
'Check to ensure that the row CheckBox is clicked.
If e.RowIndex >= 0 AndAlso e.ColumnIndex = 0 Then
'Loop to verify whether all row CheckBoxes are checked or not.
Dim isChecked As Boolean = True
For Each row As DataGridViewRow In DataGridView1.Rows
If Convert.ToBoolean(row.Cells("checkBoxColumn").EditedFormattedValue) = False Then
isChecked = False
Exit For
End If
Next
headerCheckBox.Checked = isChecked
End If
End Sub
Am calling above sub on combobox1 and combobox2 selectedindexchange
https://www.aspsnippets.com/Articles/Check-all-and-Uncheck-all-CheckBox-in-DataGridView-in-Windows-Application-using-C-and-VBNet.aspx
[![enter image description here][1]][1]
[1]: https://i.stack.imgur.com/CSzdM.png
Комментарии:
1. Введите свой код в свой вопрос, пожалуйста
Ответ №1:
Одна рекомендация, которую я могу дать, не видя точно, какой код вы написали, состояла бы в том, чтобы поместить точку останова в
BindGrid()
подменю, чтобы узнать, вызывается ли он несколько раз.
Поскольку он добавляет флажок в эту подпрограмму, если бы он вызывался несколько раз, он добавлял бы флажок для каждого вызова.
Если вы поделитесь написанным вами кодом, мы сможем предоставить более подробную помощь.
Комментарии:
1. Теперь я добавил весь свой код , который я написал, пожалуйста, помогите мне исправить
2. Спасибо вам за это! Не могли бы вы отредактировать верхний раздел, чтобы он также был включен в форматирование кода? У меня недостаточно высокий ранг в SO, чтобы это исправить.
3. Я отправил запрос на редактирование для очистки кода. В то же время, не могли бы вы поместить точку останова в свою подстановку GetRecords ()? Мне интересно, стреляют ли из него несколько раз.