在文本框中我正在获取城市名称,当我选择任何城市名称时,与该城市相关的信息应显示在datagridview上,以获取有关我使用外键的状态的其他信息,因为状态表不同并且其信息存储在另一个表中,所以我从外键state_id获取该信息。这是我的代码
DataTable dt = new DataTable();
SqlDataAdapter tda = new SqlDataAdapter("SELECT a1.type,a1.state_id,a1.desc1,a1.from_date,a1.to_date,a1.expr1005 FROM item_rate a1 FULL OUTER JOIN item_rate_state a2 ON a1.state_id=a2.state_id WHERE state_name='" + textBox2.Text + "'", scon);
tda.Fill(dt);
dataGridView2.DataSource = dt;
答案 0 :(得分:1)
查询似乎有点不对
应该是
SqlDataAdapter tda = new SqlDataAdapter("SELECT a1.type,a1.state_id,a1.desc1,a1.from_date,a1.to_date,a1.expr1005 FROM item_rate a1 FULL OUTER JOIN item_rate_state a2 ON a1.state_id=a2.state_id WHERE a2.state_name='" + textBox2.Text + "'", scon);
我建议您使用SqlCommand
并添加参数以正确查询,因为您的代码很容易被sql注入!
根据评论回答。
因为你现在想要显示文本框为空时的任何记录,简单TextChanged
事件就这样做
if (!String.IsNotNullOrEmpty(textBox2.Text))
{
DataTable dt = new DataTable();
SqlDataAdapter tda = new SqlDataAdapter("SELECT a1.type,a1.state_id,a1.desc1,a1.from_date,a1.to_date,a1.expr1005 FROM item_rate a1 FULL OUTER JOIN item_rate_state a2 ON a1.state_id=a2.state_id WHERE a2.state_name='" + textBox2.Text + "'", scon);
tda.Fill(dt);
dataGridView2.DataSource = dt;
}
答案 1 :(得分:0)
你试试这个
在设计页面
中设置textBox2.AutoPostBack="True"
protected void textBox2_TextChanged(object sender, EventArgs e)
{
DataTable dt = new DataTable();
SqlDataAdapter tda = new SqlDataAdapter("SELECT a1.type,a1.state_id,a1.desc1,a1.from_date,a1.to_date,a1.expr1005 FROM item_rate a1 FULL OUTER JOIN item_rate_state a2 ON a1.state_id=a2.state_id WHERE state_name='" + textBox2.Text + "'", scon);
tda.Fill(dt);
dataGridView2.DataSource = dt;
}