0
我正在做一个项目,我需要按降序排列我的数据网格,然后点击阻止按钮。一旦块被单击,该行中的优先级将从数字变为-1,然后将其移动到网格的底部,并将最高优先级值推送到网格的顶部。它在我第一次单击阻止按钮时起作用,但在此之后没有其他响应单击就绪或阻止按钮。我想用-1值将所有块项目移动到列表的底部,然后在点击准备好后,将所有项目返回到网格中正确的等级。有人可以解释为什么它只在删除按钮的第一次点击时对我的网格进行排序吗?如何在我的DataGridView上多排序一次?
namespace Dispatcher_2._0
{
public partial class Form1 : Form
{
DataTable Table = new DataTable();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Table.Columns.Add("PID", typeof(int));
Table.Columns.Add("Status", typeof(string));
Table.Columns.Add("Priority", typeof(int));
Table.Rows.Add(91, "Current Process", 0);
Table.Rows.Add(92, "Ready", 23);
Table.Rows.Add(95, "Ready", 22);
Table.Rows.Add(93, "Ready", 28);
Table.Rows.Add(94, "Ready", 44);
dataGridView1.DataSource = Table;
DataGridViewButtonColumn Btn = new DataGridViewButtonColumn();
DataGridViewButtonColumn Btn1 = new DataGridViewButtonColumn();
DataGridViewButtonColumn Btn2 = new DataGridViewButtonColumn();
Btn.Name = "Ready";
Btn.Text = "Ready";
Btn1.Name = "Block";
Btn1.Text = "Block";
Btn2.Name = "Terminate";
Btn2.Text = "Terminate";
Btn.UseColumnTextForButtonValue = true;
Btn1.UseColumnTextForButtonValue = true;
Btn2.UseColumnTextForButtonValue = true;
dataGridView1.Columns.Add(Btn);
dataGridView1.Columns.Add(Btn1);
dataGridView1.Columns.Add(Btn2);
}
private void button3_Click(object sender, EventArgs e)
{
Table.Clear();
}
private void button2_Click(object sender, EventArgs e)
{
if (dataGridView1.Rows.Count == 0)
{
Table.Rows.Add(91, "Current Process", 0);
Table.Rows.Add(92, "Ready", 23);
Table.Rows.Add(95, "Ready", 22);
Table.Rows.Add(93, "Ready", 28);
Table.Rows.Add(94, "Ready", 44);
dataGridView1.DataSource = Table;
}
else { }
dataGridView1.Refresh();
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
int selectedRow = dataGridView1.CurrentCell.RowIndex;
string value = dataGridView1.Rows[0].Cells[1].FormattedValue.ToString();
string value1 = dataGridView1.Rows[selectedRow].Cells[selectedRow].FormattedValue.ToString();
if (dataGridView1.Columns[e.ColumnIndex].Name == "Ready")
{
dataGridView1.Rows[selectedRow].Cells[1].Value = "Ready";
}
if (dataGridView1.Columns[e.ColumnIndex].Name == "Block")
{
dataGridView1.Rows[selectedRow].Cells[1].Value = "Blocked";
dataGridView1.Rows[selectedRow].Cells[2].Value = "-1";
DataView Tab = new DataView(Table);
Tab.Sort = "Priority desc";
dataGridView1.DataSource = Tab;
}
if (dataGridView1.Columns[e.ColumnIndex].Name == "Terminate")
{
dataGridView1.Rows.RemoveAt(0);
}
}
private void button1_Click(object sender, EventArgs e)
{
Table.Rows.Add(new Random().Next(50, 100), "Ready", textBox1.Text);
}
}
}
看看在https://stackoverflow.com/questions/8891390/how-to-sort-a-datagridview-by-2-columns – Tarzan
哇感谢,工作得很好 – Jimbo
可能重复[如何排序datagridview由2列](https://stackoverflow.com/questions/8891390/how-to-sort-a-datagridview-by-2-columns) –