1
我正在根據訪問數據庫中的複選框(是/否)過濾Datagridview過濾。在Datagridview上過濾
我的代碼---------------------------------------
{
OleDbConnection baglanti = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Burak YEŞİLYURT\Desktop\secret.accdb");
OleDbCommand komutcu;
OleDbDataAdapter adpt;
DataSet ds;
public Form1()
{
InitializeComponent();
baglanti.Open();
komutcu = new OleDbCommand("SELECT * FROM todo", baglanti);
adpt = new OleDbDataAdapter(komutcu);
ds = new DataSet();
adpt.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
adpt.RowUpdated += adpt_RowUpdated;
this.dataGridView1.Columns["id"].Visible = false;
this.dataGridView1.Columns["zaman"].Visible = false;
this.dataGridView1.Columns["todo"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
}
private void Form1_Load(object sender, EventArgs e)
{
baglanti.Open();
komutcu = new OleDbCommand("SELECT * FROM todo", baglanti);
adpt = new OleDbDataAdapter(komutcu);
ds = new DataSet();
adpt.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
}
public void adpt_RowUpdated(object sender, OleDbRowUpdatedEventArgs e)
{
if (e.RecordsAffected == 0)
{
e.Row.RowError = "Tutarlılık ihlali: UpdateCommand, beklenen 1 kaydın 0 kaydını etkiledi.";
// Hatalı satır üzerinde işlem yapılmadan es geçiliyor.
e.Status = UpdateStatus.SkipCurrentRow;
}
}
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
OleDbCommandBuilder komut = new OleDbCommandBuilder(adpt);
DataSet yeni = new DataSet();
yeni = ds.GetChanges(DataRowState.Modified | DataRowState.Added);
adpt.Update(yeni.Tables[0]);
}
private void only_cntr_CheckStateChanged(object sender, EventArgs e)
{
ds.Tables["todo"].DefaultView.RowFilter = "state = 'true'"; //// Error this line
}
當我debbug我收到此錯誤「對象引用未設置爲對象的實例。」 我失蹤的地方?任何幫助,我會很高興。謝謝
什麼是你的InitializeComponent();方法呢?看起來你在Form()構造函數和Form1_Load事件方法中都有重複的代碼。 – chridam 2012-08-17 10:07:15
這可能有助於http://www.vbdotnetforums.com/database-general-discussion/24125-problem-defaultview-rowfilter.html#post73015 – Truezplaya 2012-08-17 10:36:19