在WINFORM中
有两上combobox,分别为ddlcb1,ddlcb2.
有一个datagridview.为mygrid.
private void Stowage_listFrm_Load(object sender, EventArgs e)
{
BandA();
BandB();
ddlcb1.SelectedIndex = 0;
ddlcb2.SelectedIndex = 0;
BindData();
}
private void BandA()
{
string strsql = "select * from p_network";
DataSet ds = con.getDS2(strsql.ToString(), "network");
DataRow dr = ds.Tables["network"].NewRow();
dr["network_id"] = "0";
dr["network_name"] = "所有网点"; ddlcb1.DataSource = ds.Tables["network"];
ddlcb1.DisplayMember = "network_name";
ddlcb1.ValueMember = "network_id";
ds.Tables["network"].Rows.InsertAt(dr, 0);
ddlcb1.AutoCompleteMode = AutoCompleteMode.Suggest;
ddlcb1.AutoCompleteSource = AutoCompleteSource.ListItems;
}
private void BandB()
{
string strsql = "select * from p_network";
DataSet ds = con.getDS2(strsql.ToString(), "network");
DataRow dr = ds.Tables["network"].NewRow();
dr["network_id"] = "0";
dr["network_name"] = "所有网点"; ddlcb2.DataSource = ds.Tables["network"];
ddlcb2.DisplayMember = "network_name";
ddlcb2.ValueMember = "network_id";
ds.Tables["network"].Rows.InsertAt(dr, 0);
ddlcb2.AutoCompleteMode = AutoCompleteMode.Suggest;
ddlcb2.AutoCompleteSource = AutoCompleteSource.ListItems;
} private void BindData()
{
string a = ddlcb1.SelectedValue == null ? "0" : ddlcb1.SelectedValue.ToString();
string b = ddlcb2.SelectedValue == null ? "0" : ddlcb2.SelectedValue.ToString();
MessageBox.Show(a);
MessageBox.Show(a);
DataTable dt = new DataTable();
if (a != "0")
{
sql2 = " and a.s_begin='" + a + "'";
}
if (b != "0")
{
sql3 = " and a.s_end='" + b + "'";
}
sql = "select a.* from s_user a where 1=1 " + sql2 + sql3;
MessageBox.Show(sql);//这里输出的为什么成了select * from s_user where 1=1 and a.s_begin='1' and a.s_end='1';应该是select * from s_user where 1=1 and a.s_begin='0' and a.s_end='0'才正确。
当响应SelectedIndexChanged事件,选择第一行时(既新增行),sql不发生任何变化,只有选择其他项才会变化。 dt = con.getDT(sql);
mygrid.DataSource = dt;
}
private void ddlcb1_SelectedIndexChanged(object sender, EventArgs e)
{
BindData();
}
private void ddlcb2_SelectedIndexChanged(object sender, EventArgs e)
{
BindData();
}
有两上combobox,分别为ddlcb1,ddlcb2.
有一个datagridview.为mygrid.
private void Stowage_listFrm_Load(object sender, EventArgs e)
{
BandA();
BandB();
ddlcb1.SelectedIndex = 0;
ddlcb2.SelectedIndex = 0;
BindData();
}
private void BandA()
{
string strsql = "select * from p_network";
DataSet ds = con.getDS2(strsql.ToString(), "network");
DataRow dr = ds.Tables["network"].NewRow();
dr["network_id"] = "0";
dr["network_name"] = "所有网点"; ddlcb1.DataSource = ds.Tables["network"];
ddlcb1.DisplayMember = "network_name";
ddlcb1.ValueMember = "network_id";
ds.Tables["network"].Rows.InsertAt(dr, 0);
ddlcb1.AutoCompleteMode = AutoCompleteMode.Suggest;
ddlcb1.AutoCompleteSource = AutoCompleteSource.ListItems;
}
private void BandB()
{
string strsql = "select * from p_network";
DataSet ds = con.getDS2(strsql.ToString(), "network");
DataRow dr = ds.Tables["network"].NewRow();
dr["network_id"] = "0";
dr["network_name"] = "所有网点"; ddlcb2.DataSource = ds.Tables["network"];
ddlcb2.DisplayMember = "network_name";
ddlcb2.ValueMember = "network_id";
ds.Tables["network"].Rows.InsertAt(dr, 0);
ddlcb2.AutoCompleteMode = AutoCompleteMode.Suggest;
ddlcb2.AutoCompleteSource = AutoCompleteSource.ListItems;
} private void BindData()
{
string a = ddlcb1.SelectedValue == null ? "0" : ddlcb1.SelectedValue.ToString();
string b = ddlcb2.SelectedValue == null ? "0" : ddlcb2.SelectedValue.ToString();
MessageBox.Show(a);
MessageBox.Show(a);
DataTable dt = new DataTable();
if (a != "0")
{
sql2 = " and a.s_begin='" + a + "'";
}
if (b != "0")
{
sql3 = " and a.s_end='" + b + "'";
}
sql = "select a.* from s_user a where 1=1 " + sql2 + sql3;
MessageBox.Show(sql);//这里输出的为什么成了select * from s_user where 1=1 and a.s_begin='1' and a.s_end='1';应该是select * from s_user where 1=1 and a.s_begin='0' and a.s_end='0'才正确。
当响应SelectedIndexChanged事件,选择第一行时(既新增行),sql不发生任何变化,只有选择其他项才会变化。 dt = con.getDT(sql);
mygrid.DataSource = dt;
}
private void ddlcb1_SelectedIndexChanged(object sender, EventArgs e)
{
BindData();
}
private void ddlcb2_SelectedIndexChanged(object sender, EventArgs e)
{
BindData();
}
{
sql2 = " and a.s_begin='" + a + "'";
}
if (b != "0")
{
sql3 = " and a.s_end='" + b + "'";
}a!=0才有后面的拼接,难道不对吗?
按照这个IF来拼接就是
if (a != "0")//a="1"时sql2=" and a.s_begin='1' ";
{
sql2 = " and a.s_begin='" + a + "'";
}
if (a != "0")
{
sql2 = " and a.s_begin='" + a + "'";
}
if (b != "0")
{
sql3 = " and a.s_end='" + b + "'";
}看完你的代码,我建议你还是好好看一看编程基础方面的东西(不仅仅是语法,更多的是如何用编程语言表带你的逻辑思维)。写完后把代码重构再重构,这样你这方面的能力就会提高。连连数据库,拖拖控件那算不得什么,基础打好了,一切都会水到渠成