मैंने कई कॉलम पर डेटाग्रिड व्यू को सॉर्ट करने का एक उदाहरण खोजा है, लेकिन ऐसा लगता है कि मैं ऐसा नहीं कर सकता जो मुझे पसंद आए।एकाधिक कॉलम पर DataGridView सॉर्ट करें?
असल में, मेरे पास एक बाध्य डेटाग्रिड व्यू नियंत्रण (डेटाटेबल/डेटा व्यू के लिए बाध्य) है, और बाध्य डेटाटेबल में दो कॉलम हैं: - प्राथमिकता और दिनांक। मैं तिथि के अनुसार प्राथमिकता के भीतर क्रमबद्ध करना चाहता हूँ। यही है, प्राथमिकता कॉलम सटीकता लेता है, फिर इसकी तारीख लेकिन दोनों आरोही या अवरोही हो सकती हैं।
तो, उदाहरण के लिए, मैं कम प्राथमिकता, प्रारंभिक तिथि पहले (प्राथमिकता एएससी द्वारा आदेश, तारीख एएससी) हो सकता है, और, तिथि स्तंभ शीर्ष लेख, कम प्राथमिकता करने के लिए स्विच, देर से तारीख पहले (आदेश पर क्लिक करके प्राथमिकता से, तारीख desc)। यदि मैं प्राथमिकता पर क्लिक करता हूं, तो मैं पहले उच्च प्राथमिकता लेना चाहता हूं, फिर देर से तिथि (दिनांक कॉलम के लिए वर्तमान क्रम क्रम - प्राथमिकता desc, दिनांक desc) द्वारा क्रमबद्ध करें, लेकिन फिर दिनांक कॉलम पर क्लिक करने में सक्षम हो उच्च प्राथमिकता पर स्विच करने के लिए हेडर, प्रारंभिक दिनांक (प्राथमिकता से आदेश, दिनांक आरोही)।
आदर्श रूप से, मैं आरोही या अवरोही दिखाने के लिए दोनों कॉलम पर ग्लाइफ सॉर्ट करना चाहता हूं।
किसी भी विचार या पॉइंटर्स को आभारी रूप से प्राप्त किया जाएगा।
यह (नीचे देखें) बहुत करीब लगता है, लेकिन ग्लिफ सही काम नहीं कर रहे हैं।
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication4
{
public partial class Form1 : Form
{
DataSet1 dataset;
public Form1()
{
InitializeComponent();
dataset = new DataSet1(); // two columns: Priority(Int32) and date (DateTime)
dataset.DataTable1.AddDataTable1Row(1, DateTime.Parse("01-jan-10"));
dataset.DataTable1.AddDataTable1Row(1, DateTime.Parse("02-jan-10"));
dataset.DataTable1.AddDataTable1Row(1, DateTime.Parse("03-jan-10"));
dataset.DataTable1.AddDataTable1Row(2, DateTime.Parse("04-jan-10"));
dataset.DataTable1.AddDataTable1Row(2, DateTime.Parse("05-jan-10"));
dataset.DataTable1.AddDataTable1Row(2, DateTime.Parse("06-jan-10"));
dataset.DataTable1.AddDataTable1Row(3, DateTime.Parse("07-jan-10"));
dataset.DataTable1.AddDataTable1Row(3, DateTime.Parse("08-jan-10"));
dataset.DataTable1.AddDataTable1Row(3, DateTime.Parse("09-jan-10"));
dataGridView1.DataSource = dataset.DataTable1.DefaultView;
dataGridView1.AllowUserToAddRows = false;
dataGridView1.Columns[0].SortMode = DataGridViewColumnSortMode.Programmatic;
dataGridView1.Columns[1].SortMode = DataGridViewColumnSortMode.Programmatic;
dataGridView1.Columns[0].HeaderCell.SortGlyphDirection = SortOrder.Ascending;
dataGridView1.Columns[1].HeaderCell.SortGlyphDirection = SortOrder.Ascending;
}
private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
DataGridViewColumn[] column = new[] { dataGridView1.Columns[0], dataGridView1.Columns[1] };
DataGridViewColumnHeaderCell headerCell = dataGridView1.Columns[e.ColumnIndex].HeaderCell;
if (headerCell.SortGlyphDirection != SortOrder.Ascending)
headerCell.SortGlyphDirection = SortOrder.Ascending;
else
headerCell.SortGlyphDirection = SortOrder.Descending;
String sort = column[0].DataPropertyName + " " + fnSortDirection(column[0])
+ ", "
+ column[1].DataPropertyName + " " + fnSortDirection(column[1]);
dataset.DataTable1.DefaultView.Sort = sort;
this.textBox1.Text = sort;
}
private String fnSortDirection(DataGridViewColumn column)
{
return column.HeaderCell.SortGlyphDirection != SortOrder.Descending ? "asc" : "desc";
}
}
}
तीर ग्लाइफ के संबंध में "सही काम नहीं कर रहे" का क्या मतलब है? मैं वास्तव में सॉर्टिंग कोड लिखने के लिए समय नहीं लेना चाहता था, लेकिन मुझे यह ठीक पहले देखने के लिए मिला है, और ऐसा लगता है कि अब आप सबसे अधिक रास्ते में हैं। –
खैर ... पहले कॉलम (प्राथमिकता) के लिए ग्लिफ ऊपर और नीचे के बीच टॉगल करता है, लेकिन दूसरे कॉलम के लिए ग्लिफ किसी प्रकार का तीन-राज्य लगता है, और कुछ भी नहीं, कुछ भी नहीं दिखाता है। मुझे लगता है कि डीजीवी वास्तव में एक ही समय में दो सॉर्टिंग ग्लाइफ नहीं लेना चाहता है? मैंने "सामान्य" सॉर्टिंग के साथ एक तीसरा कॉलम जोड़ा है, और यह ठीक लगता है लेकिन (पहले दो स्तंभों पर ग्लाइफ गायब होने के साथ), लेकिन दूसरे कॉलम के लिए हेडर पर क्लिक करके मुझे पहले कॉलम पर आरोही ग्लाइफ देता है। 'मल्टीसोर्टडाटा ग्रिड व्यू' आईआईआरसी के लिए –
Google। – leppie