我要做一个库存查询功能 我想对我查询出来的数据 进行一个过滤 把库存量为0的那一条数据给隐藏掉
我在窗体上 弄了个CheckBox控件来 在CheckBox控件的单击事件里实现这个效果 代码如下private void ckb_ShangPinCheck_Click(object sender, EventArgs e)
{
DataView dv = new DataView(tab);
if (ckb_ShangPinCheck.Checked)
{
dv.RowFilter= "库存量>0";
}
else
{
dv.RowFilter = "true";
}
}
可是执行了后没反应 本来我是没有转成 DataView的 如果直接DataTable来过滤的话 过滤是可以 但是 后续的问题好麻烦 因为多次点击后我的数据绑定控件会变下面提供相关的代码:private void Frm_Select_CangKu_Load(object sender, EventArgs e)//窗体加载事件
{
Query_CangKu(1);
}
void Query_CangKu(int index)//这是执行绑定的方法
{
if (index == 1)
{
tab = bll_CangKu.Query_CangKu_BHMC("1", "", "", "");
if (tab.Rows.Count != 0)
{
if (tab.Rows.Count < 15)
{
int count = tab.Rows.Count;
for (int i = 0; i < (15 - count); i++)
{
tab.DefaultView.AddNew();
}
this.Dgdv_CangKu.DataSource = tab.DefaultView;
}
else
{
this.Dgdv_CangKu.DataSource = tab.DefaultView;
}
}
else
{
for (int i = 0; i < 25; i++)
{
tab.DefaultView.AddNew();
}
this.Dgdv_CangKu.DataSource = tab.DefaultView;
}
}
else
{
try
{
if (cmb_CangKu.SelectedIndex == 0 && txt_Type.Text == "所有类别" && txt_BH_MC.Text == string.Empty)
{
tab = bll_CangKu.Query_CangKu_BHMC("1", "", "", "");
}
else if (cmb_CangKu.SelectedIndex != 0 && txt_Type.Text == "所有类别" && txt_BH_MC.Text == string.Empty)
{
tab = bll_CangKu.Query_CangKu_BHMC("1", cmb_CangKu.SelectedValue.ToString(), "", "");
}
else if (cmb_CangKu.SelectedIndex == 0 && txt_Type.Text != "所有类别" && txt_BH_MC.Text == string.Empty)
{
tab = bll_CangKu.Query_CangKu_BHMC("1", "", TypeID, "");
}
else if (cmb_CangKu.SelectedIndex == 0 && txt_Type.Text == "所有类别" && txt_BH_MC.Text != string.Empty)
{
tab = bll_CangKu.Query_CangKu_BHMC("1", "", "", txt_BH_MC.Text.Trim().ToString());
}
else if (cmb_CangKu.SelectedIndex == 0 && txt_Type.Text != "所有类别" && txt_BH_MC.Text != string.Empty)
{
tab = bll_CangKu.Query_CangKu_BHMC("1", "", TypeID, txt_BH_MC.Text.Trim().ToString());
}
else if (cmb_CangKu.SelectedIndex != 0 && txt_Type.Text != "所有类别" && txt_BH_MC.Text == string.Empty)
{
tab = bll_CangKu.Query_CangKu_BHMC("1", cmb_CangKu.SelectedValue.ToString(), TypeID, "");
}
else if (cmb_CangKu.SelectedIndex != 0 && txt_Type.Text != "所有类别" && txt_BH_MC.Text != string.Empty)
{
tab = bll_CangKu.Query_CangKu_BHMC("1", cmb_CangKu.SelectedValue.ToString(), TypeID, txt_BH_MC.Text.Trim().ToString());
}
else if (cmb_CangKu.SelectedIndex != 0 && txt_Type.Text == "所有类别" && txt_BH_MC.Text != string.Empty)
{
tab = bll_CangKu.Query_CangKu_BHMC("1", cmb_CangKu.SelectedValue.ToString(), "", txt_BH_MC.Text.Trim().ToString());
}
if (tab.Rows.Count != 0)
{
if (tab.Rows.Count < 15)
{
int count = tab.Rows.Count;
for (int i = 0; i < (15 - count); i++)
{
tab.DefaultView.AddNew();
}
this.Dgdv_CangKu.DataSource = tab.DefaultView;
}
else
{
this.Dgdv_CangKu.DataSource = tab.DefaultView;
}
}
else
{
for (int i = 0; i < 15; i++)
{
tab.DefaultView.AddNew();
}
this.Dgdv_CangKu.DataSource = tab;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "系统提示");
}
}
}请路过的高手们 帮忙解决下这个问题 谢谢了 在线等
我在窗体上 弄了个CheckBox控件来 在CheckBox控件的单击事件里实现这个效果 代码如下private void ckb_ShangPinCheck_Click(object sender, EventArgs e)
{
DataView dv = new DataView(tab);
if (ckb_ShangPinCheck.Checked)
{
dv.RowFilter= "库存量>0";
}
else
{
dv.RowFilter = "true";
}
}
可是执行了后没反应 本来我是没有转成 DataView的 如果直接DataTable来过滤的话 过滤是可以 但是 后续的问题好麻烦 因为多次点击后我的数据绑定控件会变下面提供相关的代码:private void Frm_Select_CangKu_Load(object sender, EventArgs e)//窗体加载事件
{
Query_CangKu(1);
}
void Query_CangKu(int index)//这是执行绑定的方法
{
if (index == 1)
{
tab = bll_CangKu.Query_CangKu_BHMC("1", "", "", "");
if (tab.Rows.Count != 0)
{
if (tab.Rows.Count < 15)
{
int count = tab.Rows.Count;
for (int i = 0; i < (15 - count); i++)
{
tab.DefaultView.AddNew();
}
this.Dgdv_CangKu.DataSource = tab.DefaultView;
}
else
{
this.Dgdv_CangKu.DataSource = tab.DefaultView;
}
}
else
{
for (int i = 0; i < 25; i++)
{
tab.DefaultView.AddNew();
}
this.Dgdv_CangKu.DataSource = tab.DefaultView;
}
}
else
{
try
{
if (cmb_CangKu.SelectedIndex == 0 && txt_Type.Text == "所有类别" && txt_BH_MC.Text == string.Empty)
{
tab = bll_CangKu.Query_CangKu_BHMC("1", "", "", "");
}
else if (cmb_CangKu.SelectedIndex != 0 && txt_Type.Text == "所有类别" && txt_BH_MC.Text == string.Empty)
{
tab = bll_CangKu.Query_CangKu_BHMC("1", cmb_CangKu.SelectedValue.ToString(), "", "");
}
else if (cmb_CangKu.SelectedIndex == 0 && txt_Type.Text != "所有类别" && txt_BH_MC.Text == string.Empty)
{
tab = bll_CangKu.Query_CangKu_BHMC("1", "", TypeID, "");
}
else if (cmb_CangKu.SelectedIndex == 0 && txt_Type.Text == "所有类别" && txt_BH_MC.Text != string.Empty)
{
tab = bll_CangKu.Query_CangKu_BHMC("1", "", "", txt_BH_MC.Text.Trim().ToString());
}
else if (cmb_CangKu.SelectedIndex == 0 && txt_Type.Text != "所有类别" && txt_BH_MC.Text != string.Empty)
{
tab = bll_CangKu.Query_CangKu_BHMC("1", "", TypeID, txt_BH_MC.Text.Trim().ToString());
}
else if (cmb_CangKu.SelectedIndex != 0 && txt_Type.Text != "所有类别" && txt_BH_MC.Text == string.Empty)
{
tab = bll_CangKu.Query_CangKu_BHMC("1", cmb_CangKu.SelectedValue.ToString(), TypeID, "");
}
else if (cmb_CangKu.SelectedIndex != 0 && txt_Type.Text != "所有类别" && txt_BH_MC.Text != string.Empty)
{
tab = bll_CangKu.Query_CangKu_BHMC("1", cmb_CangKu.SelectedValue.ToString(), TypeID, txt_BH_MC.Text.Trim().ToString());
}
else if (cmb_CangKu.SelectedIndex != 0 && txt_Type.Text == "所有类别" && txt_BH_MC.Text != string.Empty)
{
tab = bll_CangKu.Query_CangKu_BHMC("1", cmb_CangKu.SelectedValue.ToString(), "", txt_BH_MC.Text.Trim().ToString());
}
if (tab.Rows.Count != 0)
{
if (tab.Rows.Count < 15)
{
int count = tab.Rows.Count;
for (int i = 0; i < (15 - count); i++)
{
tab.DefaultView.AddNew();
}
this.Dgdv_CangKu.DataSource = tab.DefaultView;
}
else
{
this.Dgdv_CangKu.DataSource = tab.DefaultView;
}
}
else
{
for (int i = 0; i < 15; i++)
{
tab.DefaultView.AddNew();
}
this.Dgdv_CangKu.DataSource = tab;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "系统提示");
}
}
}请路过的高手们 帮忙解决下这个问题 谢谢了 在线等
解决方案 »
- StreamReader能不能读取二进制文件?
- 如何通过类名创建对象
- datagrid 创建动态编辑列,并且能够实现修改和,删除等功能,这样的例子谁有,我没有搜到?
- C#binder.BindToFielt方法问题
- ComBox数据绑定问题,来拿分了
- RichTextBox.Rtf导致的System.OutOfMemoryException问题
- 刚开始用C#(winForm)做控件,想做一个圆角的的窗体,但是现在只会做方角的.还请各位高手帮忙.
- 求教!! dropdownlist中的selectchange事件!!!
- 这个用法的用意是什么呢?
- 神啊救救我吧 干掉这个session
- 求C#中如何调用及制作帮助文档(CHM格式)?
- 请教:老外这段程序搞不懂啥意思?大哥帮忙分析一下。。。
这个可能不行,清空应该就可以了
dv.RowFilter = "true";
dv.RowFilter = "";
拉上来一个控件DataGridView和一个CheckBox
声明一个全局的DataTable对象private DataTable dt = null;
在FormLoad的时候写如下代码
dt = new DataTable();
dt.Columns.Add("test1");
dt.Columns.Add("test2");
dt.Columns.Add("test3");
for (int i = 0; i < 10; i++)
{
DataRow row = dt.NewRow();
row["test1"] = "test1" + i;
dt.Rows.Add(row);
}
DataView dv = new DataView(dt);
this.dataGridView1.DataSource = dv;然后在CheckBox的CheckedChanged事件中写下如下代码
DataView dv = new DataView(dt);
if (this.checkBox1.Checked)
{
dv.RowFilter = "test1 > 'test13'";
}
this.dataGridView1.DataSource = dv;好了,你可以测试了~~~另外你还可以使用DataTable的Select方法
不过这个方法返回的是DataRow[]
你可以这样
DataRow[] rows = dt.Select("你的条件");
DataTable table = dt.Clone();
foreach(DataRow in rows)
{
table.ImportRow(row);
}
然后把table绑定到控件就可以了
你只要记住,原来的数据源不要去改变,就可以了~~~
DataView dv = this.dataGridView1.DataSource as DataView;
if (this.checkBox1.Checked)
{
dv.RowFilter = "test1 > 'test13'";
}
else
{
dv.RowFilter = "";
}
{
DataView dv = tab.DefaultView; //与GridView绑定的DataView
if (ckb_ShangPinCheck.Checked)
{
dv.RowFilter= "库存量>0";
}
else
{
dv.RowFilter = "true";
}
}
ds.Tables[0].Select("库存量>0");
DataTable table = dt.Clone();
foreach(DataRow in rows)
{
table.ImportRow(row);
}
比用其他方法都要好 现在就是隐藏了后啊 因为我只有拿1条数据做测试 我的DataGridView控件会只剩下标题 我在绑定的时候 就是为了防止出现这种情况 在绑定之前就先判断了Count 如果少于15条 就通过循环添加空白行if (tab.Rows.Count != 0)
{
if (tab.Rows.Count < 15) 如果数据少月15条
{
int count = tab.Rows.Count;
for (int i = 0; i < (15 - count); i++)就循环添加空白数据项
{
tab.DefaultView.AddNew();
}
this.Dgdv_CangKu.DataSource = tab.DefaultView;
}
else
{
this.Dgdv_CangKu.DataSource = tab.DefaultView;
}
}
else
{
for (int i = 0; i < 15; i++)
{
tab.DefaultView.AddNew();
}
this.Dgdv_CangKu.DataSource = tab;
}这样就不会使窗体太难看 始终有网格存在 这样更美观一些
{
DataView dv = tab.defaultview;
if (ckb_ShangPinCheck.Checked)
{
dv.RowFilter= "库存量>0";
}
else
{
dv.RowFilter = "";
}
//再进行绑定,
}
{
if (ckb_ShangPinCheck.Checked)
{
DataRow[] rows = tab.Select("库存量>0");
DataTable table = tab.Clone();
foreach (DataRow row in rows)
{
table.ImportRow(row);
}
if (table.Rows.Count > 0)
{
if (table.Rows.Count < 20)
{
int count = table.Rows.Count;
for (int i = 0; i < (20 - count); i++)
{
table.DefaultView.AddNew();
}
this.Dgdv_CangKu.DataSource = table.DefaultView;
}
else
{
this.Dgdv_CangKu.DataSource = table.DefaultView;
}
}
else
{
for (int i = 0; i < 20; i++)
{
table.DefaultView.AddNew();
}
this.Dgdv_CangKu.DataSource = table.DefaultView;
}
}
else
{
this.Dgdv_CangKu.DataSource = tab;
}
}效果是实现了 而且感觉还不错 但是大家如果有更好的实现方法 就一定要告诉我哦