골
현재 DataGridView에서 항목을 선택하고 맨 위에서 선택한 항목을 순서대로 정렬하는 방법을 찾고 있습니다.
예
사용자에 의한 첫 번째 선택 :
Selected Column1 Column2
a 1
b 2
c 3
x d 4
두 번째 선택 ...
Selected Column1 Column2
a 1
x b 2
c 3
x d 4
세 번째 선택 ...
Selected Column1 Column2
x a 1
x b 2
c 3
x d 4
주문
4th row
2nd row
1st row
요약
사용자가 선택한 첫 번째 항목은 4 번째 행이었고 2 번째 및 마지막으로 1 번째 행이었습니다.
질문
위에서 설명한대로 모든 행의 목록을 어떻게 얻을 수 있습니까?
현재 코드
사용자가 선택한 것을 볼 수 있도록 체크 박스 열을 이렇게 만들었습니다.
DataGridViewCheckBoxColumn checkBoxColumn = new DataGridViewCheckBoxColumn();
checkBoxColumn.Name = "Selected";
checkBoxColumn.HeaderText = "Selected";
checkBoxColumn.ReadOnly = false;
productsView.Columns.Add(checkBoxColumn);
그런 다음 사용자는 확인란을 선택하여 원하는 레코드를 선택한 다음 다른 양식을 여는 단추를 클릭합니다.
그러나 순서는 혼합되어 있습니다.
private void addBtn_Click(object sender, EventArgs e)
{
foreach (var row in checkedRows)
{
DateTime dateTime = dateText.Value;
string orderNumber = orderNumberText.Text;
SelectedProducts form = new SelectedProducts(dateTime, orderNumber);
form.ShowDialog();
}
}
나는 내가 생각한다 :
새 주문에 따라 내 데이터를 저장할 새 목록을 만듭니다.
List<Item> SelectedItemList= new List<Item>
확인란 열 값 변경을 듣습니다. 체크 박스가 체크되면 "SelectedList"에 추가하거나 체크하지 않으면 제거합니다. ( DataGridView CheckBox 이벤트 변경 감지 방법은? )
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.Rows.Count > 0)
{
if ((bool)dataGridView1.SelectedRows[0].Cells[2].Value) //the index of checkbox column
SelectedItemList.Add(itemBindingSource.current as Item)//add data to the list
else
SelectedItemList.Remove(itemBindingSource.current as Item) // remove data to list
}
}
그런 다음 목록을 양식 표시에 대한 매개 변수로 사용하십시오.
SelectedProducts form = new SelectedProducts(SelectedItemList);
form.ShowDialog();
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다