这个问题困扰我好几天了。请大家帮我看看问题出在哪里?打开查询窗口
private void button1_Click(object sender, System.EventArgs e)
{
Form2 frm = new Form2();
frm.ShowDialog();//打开查询窗口Form2,等待查询窗口关闭,再执行以下代码
string strSql = frm.strSql ;//strWhere是Form2中生成的Where条件组合语句
//以下是执行查询条件,刷新datagridview过程
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["cnn"]);
con.Open();
SqlDataAdapter ada = new SqlDataAdapter(strWhere,con); //这里接收不到strSql
DataSet ds = new DataSet();
ada.Fill(ds,"temp");
DataGridview1.DataSource=ds.Tables["temp"].DefaultView;
DataGridview1.DataBind();
ada.Dispose();
con.Close();
frm.Dispose();
}
查询窗口 Public String strSql
protected void search_Click(object sender, System.EventArgs e)
{
String a1= this.TextBox1.Text.Trim().ToString()
String a2=this.TextBox2.Text.Trim().ToString()
StringBuilder strSql = new StringBuilder("select * from I_CustomOrder where 1=1 ") If (a1 <> "" And a2 <> "" )
{
strSql.Append(" and WRFAC between '" + a1 + "' and '" + a2 + "' ")
}
strSql.Append("order by WRTOOL,WRRDTE desc")
string strSql=strSql.ToString();
//不能传strSql回去,不知道是StringBuilder 的问题还是StringBuilder 转换为string的问题
this.Close()
}
private void button1_Click(object sender, System.EventArgs e)
{
Form2 frm = new Form2();
frm.ShowDialog();//打开查询窗口Form2,等待查询窗口关闭,再执行以下代码
string strSql = frm.strSql ;//strWhere是Form2中生成的Where条件组合语句
//以下是执行查询条件,刷新datagridview过程
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["cnn"]);
con.Open();
SqlDataAdapter ada = new SqlDataAdapter(strWhere,con); //这里接收不到strSql
DataSet ds = new DataSet();
ada.Fill(ds,"temp");
DataGridview1.DataSource=ds.Tables["temp"].DefaultView;
DataGridview1.DataBind();
ada.Dispose();
con.Close();
frm.Dispose();
}
查询窗口 Public String strSql
protected void search_Click(object sender, System.EventArgs e)
{
String a1= this.TextBox1.Text.Trim().ToString()
String a2=this.TextBox2.Text.Trim().ToString()
StringBuilder strSql = new StringBuilder("select * from I_CustomOrder where 1=1 ") If (a1 <> "" And a2 <> "" )
{
strSql.Append(" and WRFAC between '" + a1 + "' and '" + a2 + "' ")
}
strSql.Append("order by WRTOOL,WRRDTE desc")
string strSql=strSql.ToString();
//不能传strSql回去,不知道是StringBuilder 的问题还是StringBuilder 转换为string的问题
this.Close()
}
那你的
SqlDataAdapter ada = new SqlDataAdapter(strWhere,con);
红字部分怎么会有strWhere的,应该是strSql才对啊
你将这个参数封装成属性试看看
public string StrSql
{
get
{
return this.strSql;
}
}
接收窗口
string strSql = frm.StrSql;
在那个Search按钮中最后一句话是close(),窗口都被关闭销毁了,值自然传不进父窗口
下面这个应该可行吧:
将Form2的“Search”按钮的DialogResult设置为OK(其他的什么Yes也行)
在button1_Click()中写成:
if(frm2.ShowDialog()==DialogResult.OK)
{
string strSql = frm.strSql
}
楼上的“最后一句话是close(),窗口都被关闭销毁了”
你研究清楚再说好不好啊,"close()窗口被销毁"谁说的啊,请你弄清楚close()与Dispose()的区别再说好不好啊
SqlDataAdapter ada = new SqlDataAdapter(strSql,con);
的时候,strSql中有没有值
如果有值的话就说明传值成功了,那就是你的SQL语句有问题
如果没有值的话你再考虑是不是传值出了问题
StringBuilder strSql = new StringBuilder("select * from I_CustomOrder where 1=1 ")
Public String strSql
三个名字一样的变量 你确定没报错
你确定传的是那个
protected void search_Click(object sender, System.EventArgs e)
{
String a1= this.TextBox1.Text.Trim().ToString()
String a2=this.TextBox2.Text.Trim().ToString()
StringBuilder strSql = new StringBuilder("select * from I_CustomOrder where 1=1 ") If (a1 <> "" And a2 <> "" )
{
strSql.Append(" and WRFAC between '" + a1 + "' and '" + a2 + "' ")
}
strSql.Append("order by WRTOOL,WRRDTE desc")
string strSql=strSql.ToString(); //这里只是新建立一个变量罢了,没有赋值到全局的strSql里。
//不能传strSql回去,不知道是StringBuilder 的问题还是StringBuilder 转换为string的问题
this.Close()
}
-----------------------------------------------------不可能的,三个变量同名,什么时候赋值过给全局变量 Public String strSql ??????
先把
StringBuilder strSql = new StringBuilder("select * from I_CustomOrder where 1=1 ")
把这里的strSql换一下,避免同名
热后
string strSql=strSql.ToString();
这里你定义的是局部变量。不是给全局变量赋值的,改为:
this.strSql=strSql.ToString();
这里你定义的是局部变量。不是给全局变量赋值的,改为:
this.strSql=strSql.ToString();果然是问题所在,又学到东西了。