제발 좀 쉬워주세요. 저는 C#과 그 무언가로 전적으로 자기 가르치기 때문에 여유 시간에 놀 수있는 기회를 얻습니다!dataview rowfilter가 예상대로 작동하지 않습니다.
부울 유형의 한 열을 포함하는 데이터 테이블을 보유하고 있습니다. 이 테이블을 DataGridview에 바인딩하고 부울 유형을 사용하여 빈 체크 박스 열을 표시 한 다음 사용자는 여러 행 옆의 상자를 선택할 수 있습니다.
DataGrid를 충전 :
public void fillDatagridView()
{
dtMembers.Columns.Add("Print", typeof(bool));
dtMembers.Columns.Add("Contact ID", typeof(string));
dtMembers.Columns.Add("Membership Number", typeof(int));
dtMembers.Columns.Add("First Name", typeof(string));
dtMembers.Columns.Add("Last Name", typeof(string));
dtMembers.Columns.Add("Current Application Type", typeof(string));
dtMembers.Columns.Add("Email Address", typeof(string));
dtMembers.Columns.Add("Membership Type", typeof(string));
dtMembers.Columns.Add("Approval Date", typeof(DateTime));
dgMembers.DataSource = dtMembers;
}
은 "나는 또한이 옵션을 선택하면 행을 확인 만 표시에있는 DataGridView를 필터링 양식에 확인란을"쇼 행을 선택 "이 코드는 다음과 같습니다 쇼가이 시점에 "그래서 모든 좋은 행을 확인 : 행을 확인"는 사용자가 다음 여러 행과 검사를 틱 때
private void cbShowSelected_CheckedChanged(object sender, EventArgs e)
{
if (cbShowSelected.Checked)
dtMembers.DefaultView.RowFilter = "Print = True";
else
dtMembers.DefaultView.RowFilter = string.Empty;
}
위의 코드가 잘 작동 이벤트를 확인하십시오. " 많은 수의 행을 검사해야하는 사용자가 몇 명 있습니다. 유용성을 고려하여 검색 텍스트 상자에 멤버십 번호를 입력하면 datagridview가 해당 멤버십 번호로 필터링되도록 코드를 추가했습니다. 또한 사용자가 + 심볼을 입력하고 필터보기에 하나의 행만있는 경우 해당 행을 틱합니다. 그 코드가 성공적으로 해당 행의 체크 박스에 체크 않지만, 그때 가서 확인하면
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text.Length > 0)
{
if (textBox1.Text.Substring(textBox1.Text.Length - 1) != "+")
{
dtMembers.DefaultView.RowFilter = string.Format("[_RowString] LIKE '%{0}%'", textBox1.Text);
}
else
{
if (dgMembers.DisplayedRowCount(false) == 1)
{
dgMembers.Rows[dgMembers.FirstDisplayedCell.RowIndex].Cells[0].Value = true;
textBox1.Text = string.Empty;
}
}
}
}
해당 행이 결과 필터링 된보기에 포함되지 않는다 "쇼 행을 검사"나는 다음과 같은 코드를 사용하여 해당했다. 수동으로 두 행을 확인한 다음 + 기호를 사용하여 하나를 선택하면 수동으로 확인하는 모든 행이 표시되지만 + 기호를 사용하는 행은 표시되지 않습니다. bool이 해당 행에 대해 True로 설정되어 있는지 확인하기 위해 코드를 디버깅했습니다. 이제는 문제가 있습니다! 어떤 도움이라도 정말 감사 할 것입니다.
OK, 테스트를 더 해보고 명확하게해야합니다. + 기호를 사용하여 행을 체크 한 다음 "선택한 레코드 표시"를 선택하면 레코드가 표시되지 않습니다. 수동으로 다른 레코드를 수동으로 틱한 다음 "선택한 레코드 표시"를 선택하면 두 레코드가 모두 표시됩니다. –
아마도 "== true"를 추가해야 체크 할 수 있습니까? – starko
의견을 보내 주셔서 감사합니다. 시도해 봤지만 도움이되지 않습니다. 수동으로 셀을 검사 할 때 정확히 동일한 필터 구문이 작동하지 않는다고 생각했습니다. 일을 간단하게하기 위해 이제 datagridview, 텍스트 상자 (검색) 및 체크 상자 (체크 된 행 표시)가있는 새로운 프로젝트를 만들었고 코드를 기본으로 다시 제거했습니다. 불행히도 저는 여전히 같은 문제가 있습니다. –