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