benim DataGridView nesnesi ben sütunları yeniden sıralama algılayabilir nasılDataGridView kolu sütun yeniden sıralama olay
AllowUserToOrderColumns = true;
için belirlenen?
benim DataGridView nesnesi ben sütunları yeniden sıralama algılayabilir nasılDataGridView kolu sütun yeniden sıralama olay
AllowUserToOrderColumns = true;
için belirlenen?
Bu olayı halletmek gerekeni yapar mı? Statik bir int değişken Do -
Tam olarak neyi başarmaya çalıştığınızı bilmiyorum. Özel bir sütun sıralama davranışı eklemek isterseniz, this tutorial on customizable column sorting'a bakabilirsiniz.
Temel olarak, orada MouseDown
olayını yakalarsınız ve kullanıcının bir sütun üstbilgisine tıklayıp basmadığına bakarsınız. Eğer yaptıysa ve kendisine atanan bir olay varsa, bu gerçekleştirilebilir.
Ben
1 ... öneririm.
2 - :: ColumnHeaderMouseClick işleyicisinde bu değişkeni Etkiler
3 - işleyici :: sıralama bu değişkenin ile çizgiyi seç
Örnek:
private static int idRequetePourtriage = -1;
private void dgvRequete_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (dgvRequete.SelectedRows.Count > 0)
idRequetePourtriage = Convert.ToInt32(dgvRequete.SelectedRows[0].Cells[TEXT_colNameIdRequete].Value.ToString());
}
private void dgvRequete_Sorted(object sender, EventArgs e)
{
desactivateGridSelected();
int rowCount = 0;
Boolean isFind = false;
while (rowCount < dgvRequete.Rows.Count && !isFind)
{
if (idRequetePourtriage == Convert.ToInt32(dgvRequete.Rows[rowCount].Cells[TEXT_colNameIdRequete].Value.ToString()))
{
isFind = true;
activateGridSelected();
dgvRequete.Rows[rowCount].Selected = true;
}
rowCount++;
}
if (!isFind)
{
activateGridSelected();
}
}
"Use ColumnDisplayIndexChanged" olayı doğru olanı gibi görünüyor. Benim için çalıştı. (Ben bunun için temsilcisi vardı Yorum eklemek istiyorum.)
Bir olay işleyicisi o olay için o sütun için yeni değer yansıtan e.Column içerecektir. Aradığınız özellik DisplayIndex. Olayın, DisplayIndex'in değiştiği her sütun için tetikleneceğini unutmayın.
olay başlangıçta ateş edeceği yanaPrivate Sub data_ColumnDisplayIndexChanged(sender As Object, e As System.Windows.Forms.DataGridViewColumnEventArgs) Handles data.ColumnDisplayIndexChanged
Debug.Print(e.Column.DisplayIndex & vbTab & e.Column.Name)
End Sub
(birden çok kez), size sütun eklerken veya yeniden tetiklenmesini önlemek için mantık çeşit eklemek isteyebilirsiniz: vb.net olarak
önceki ayarlara dayalı sütunları düzenlenmesi: başlangıç kodu yapılır
Private Sub dataAnts_ColumnDisplayIndexChanged(sender As Object, e As System.Windows.Forms.DataGridViewColumnEventArgs) Handles dataAnts.ColumnDisplayIndexChanged
If bSortingColumns = False Then
Debug.Print(e.Column.DisplayIndex & vbTab & e.Column.Name)
End If
End Sub
Veya bir olay işleyicisi ekleyin programlı sonra. değil mi bu doğru olarak işaretlenmiş neden
emin değilim. Bu olay, veri tablosunun yeniden bağlanması vb. Gibi diğer birçok durumda da tetiklenecektir. – Robinson
Bu, kullanıcının sütunları yeniden sıraladığı her seferinde en az iki kez ateşlenir. Başlangıç noktası için, bir kez bitiş noktası için ve aradaki her sütun için bir kez. Etkinlikle yaptığınız şeye bağlı olarak bu çok fazla yük olabilirdi. Eğer 'ColumnDisplayIndexChanged' olayını nasıl kullanılacağı hakkında bazı ayrıntıları eğer – Wayne