刚开始接触ASP.NET中的一些控件的时候,先前没有任何概念,在不停地做练习,做项目的过程中,不断地逼迫自己去学习更多。书本上的案例大多是绑定数据库数据源来实现的,这样只能绑死数据,不能动态筛选。在数据显示变动不大的时候,利用这种方法简单,然而如果再加入筛选、多条件筛选等等操作的时候,利用拼接查询语句实现稍微简单点。
关于拼接sql语句动态绑定数据源的方法详解:
1、首先在页面中拉一个GridView控件
2、在切换到界面设计中,选择编辑列——【BoundField】——【添加】——【HeaderText】中输入列名——【DataField】中输入与数据库中相应字段匹配的名称,在最后将自动生成字段的复选框去掉勾选(否则生成的表格会将查询到的所有列显示出来)
3、前台工作基本结束,后台代码中,先在引用中添加Configuration引用,连接数据库需要用到。将需要通过GridView显示出来的数据的查询事件写到Page_Load中
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string constr = ConfigurationManager.ConnectionStrings["str"].ConnectionString.ToString(); //连接字符串
SqlConnection con = new SqlConnection(constr);//创建连接
con.Open();//打开连接
StringBuilder s = new StringBuilder();//字符串拼接对象
s.Append("select * from Equip where 1=1");//要执行的sql语句
SqlDataAdapter adsa = new SqlDataAdapter(s.ToString(), con);
//或直接写成 SqlDataAdapter adsa = new SqlDataAdapter("select * from Equip", con);
DataSet ds = new DataSet();
adsa.Fill(ds);
if (ds.Tables[0].Rows.Count > 0)
{
GridView1.DataSource = ds;
GridView1.DataBind();
}
con.Close();
}
}
4、此上是没有筛选条件的查询,如果需要筛选信息,则可以通过下拉框或者文本框输入要查找的内容,点击按钮进行控件数据源的重新绑定,用到的关键就是sql语句的拼接
protected void Butsel_Click(object sender, EventArgs e)
{
string jfid = Dropjf.Text;//获取筛选的机房号
string eqname = Dropeq.Text;//获取筛选设备名称
string constr = ConfigurationManager.ConnectionStrings["str"].ConnectionString.ToString(); //连接字符串
SqlConnection con = new SqlConnection(constr);
con.Open();
StringBuilder s = new StringBuilder();
s.Append("select * from Equip where 1=1");
if (jfid != "全部")
{
s.Append("and storage="+jfid);
}
if (eqname != "全部")
{
s.Append("and eqname=" + "‘"+eqname+"‘");
}
SqlDataAdapter adsa = new SqlDataAdapter(s.ToString(), con);
DataSet ds = new DataSet();
adsa.Fill(ds);
if (ds.Tables[0].Rows.Count > 0)
{
GridView1.DataSource = ds;
GridView1.DataBind();
}
con.Close();
}
5、以此类推,能够实现点击按钮,进行数据的筛选。
在网上有的博客中也看到有实现不用点击按钮就可以筛选出所要数据,并没有深入了解,目前也只能这样重绑数据源。
原文:http://www.cnblogs.com/Invader-czy/p/6241537.html