0
C# 및 DataGridView와 함께 MySQL을 사용하고 있습니다.DataAdapter.Fill NullReferenceException DataTable.Columns.Clear 및 열 정렬 후
사용자가 열을 클릭하여 정렬 한 다음 열을 강제로 지우는 동작이 발생하면 문제가 발생합니다 (사용자가 확인란을 사용하여 볼 열을 선택하지 않은 경우 발생).
실제 예외는 dataAdapter.Fill (dt)에서 발생합니다.
사용자가 실제 열을 정렬하지 않으면 코드가 제대로 작동합니다. 사용자가 열을 재 배열 한 후에도 잘 작동합니다. 나는 몇 시간 동안이 문제를 해결하기 위해 노력했지만 나는 아이디어가 부족했습니다
public void GetDataAndFilter(string selectQuery, bool colChange)
{
using (var conn = connect())
{
MySqlCommand cmd = new MySqlCommand(selectQuery, conn);
dataAdapter = new MySqlDataAdapter(cmd);
dt.Clear();
if (colChange)
dt.Columns.Clear();
dataAdapter.Fill(dt);
conn.Close();
}
}
:
이
내 코드입니다.감사합니다. 고맙습니다.
dt.Clear();
dt.Columns.Clear();
을하고 DT 다시 대신 클리어의 열 자체를 인스턴스화 :
안녕하세요, 고마워, :) 이제 colchange가 true 일 때마다 dt를 다시 인스턴스화합니다. 또한 bindinsource의 데이터 소스를 새 dt로 설정해야합니다. 칼럼 정렬이 느슨하지만 괜찮습니다 (추가/제거 된 열은 새 데이터를 모니터링 할 때만 수행됩니다). – DkM