如何使用变量给数据源控件参数赋值、如何动态增减数据源控件参数并支持分页
2006-06-12 18:35
447 查看
一、如何使用变量给数据源控件参数赋值
在VS2005中数据源控件的参数类型有六种:ControlParameter 、CookieParameter 、FormParameter 、ProfileParameter 、QueryStringParameter 、SessionParameter。利用这些参数类型可以很方便的给数据源控件的参数赋值。但 在实际编程中我们经常要使用变量给数据源控件的参数赋值,那么如何使用变量来赋值呢?
方法如下:
1、在前台代码中写好带参数的查询语句:
<asp:SqlDataSource ID="SqlDataSourcedown" runat="server" ConnectionString="<%$ ConnectionStrings:articleConnectionString %>"
SelectCommand="SELECT TOP (15) id, name, type FROM kejian WHERE (isfabu = 1) AND (kemuid = @kemuid) AND (lianjiid=@lianjiid) ORDER BY downn DESC">
<SelectParameters>
<asp:Parameter Name="kemuid" />
<asp:Parameter Name="lianjiid" />
</SelectParameters>
</asp:SqlDataSource>
2、在后台代码中加入如下语句:
int kemuid = 0;
int lianjiid = 0;
protected void Page_Load(object sender, EventArgs e)
{
int id = Convert.ToInt32(Request.QueryString["id"]);
string sql = "select kemuid,lianjiid from kejian where id=" + id;
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["articleConnectionString"].ConnectionString))
{
using (SqlCommand command = new SqlCommand(sql, connection))
{
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
if (reader.Read())
{
kemuid = (int)reader["kemuid"];
lianjiid = (int)reader["lianjiid"];
}
}
}
}
this.SqlDataSourcedown.SelectParameters.Clear();
this.SqlDataSourcedown.SelectParameters.Add("kemuid", System.TypeCode.Int32, kemuid.ToString());
this.SqlDataSourcedown.SelectParameters.Add("lianjiid", System.TypeCode.Int32, lianjiid.ToString());
}
请注意前后台代码中的红色部分,前后台代码中参数名一定要一致。就能实现使用变量来给参数赋值了。
是不是很简单很方便呢?
二、如何动态增减数据源控件参数并支持分页
适于环境:
页面search.aspx接受两个查询变量kemu及name,当kemu=0时进行全部科目的查询,当kemu!=0时进行当前科目的查询,并且要求对查询的结果进行分页。
实现方法:
在前台代码中加入:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:articleConnectionString %>"
SelectCommand="SELECT kejian.id, kejian.name, kejian.huanjing, kejian.type, kejian.downn, kejian.isfabu, kejian.stars, kejian.size, kejian.kemuid, kejian.updowntime, kemu.name AS kemu, lianji.name AS lianji FROM kejian INNER JOIN kemu ON kejian.kemuid = kemu.id INNER JOIN lianji ON kejian.lianjiid = lianji.id WHERE (kejian.name LIKE N'%' + @name + N'%') AND (kejian.kemuid = @kemu) AND (kejian.isfabu = 1) ORDER BY kejian.updowntime DESC">
<SelectParameters>
<asp:Parameter Name="name" />
<asp:Parameter Name="kemu" />
</SelectParameters>
</asp:SqlDataSource>
在后台代码中加入:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GridViewDataBind(Convert.ToInt32(Request.QueryString["kemu"]), Request.QueryString["name"]);
}
}
private void GridViewDataBind(int kemu, string name)
{
string sql = "SELECT kejian.id, kejian.name, kemu.name AS kemu, lianji.name AS lianji, kejian.huanjing, kejian.type, kejian.downn, kejian.stars, kejian.size, kejian.kemuid ";
sql += " FROM kejian INNER JOIN kemu ON kejian.kemuid = kemu.id INNER JOIN lianji ON kejian.lianjiid = lianji.id ";
sql += " WHERE (kejian.isfabu = 1) ";
if (kemu == 0)
{
sql += " AND (kejian.name LIKE N'%' + @name + N'%') ORDER BY kejian.updownuserid DESC";
this.SqlDataSource1.SelectParameters.Clear();
this.SqlDataSource1.SelectParameters.Add("name", System.TypeCode.String, name);
}
else
{
sql += " AND (kejian.kemuid = @kemu) AND (kejian.name LIKE N'%' + @name + N'%') ORDER BY kejian.updownuserid DESC";
this.SqlDataSource1.SelectParameters.Clear();
this.SqlDataSource1.SelectParameters.Add("kemu", System.TypeCode.String, kemu.ToString());
this.SqlDataSource1.SelectParameters.Add("name", System.TypeCode.String, name);
}
SqlDataSource1.SelectCommand = sql;
}
protected void GridView1_PageIndexChanged(object sender, EventArgs e)
{
GridViewDataBind(Convert.ToInt32(Request.QueryString["kemu"]), Request.QueryString["name"]);
}
在VS2005中数据源控件的参数类型有六种:ControlParameter 、CookieParameter 、FormParameter 、ProfileParameter 、QueryStringParameter 、SessionParameter。利用这些参数类型可以很方便的给数据源控件的参数赋值。但 在实际编程中我们经常要使用变量给数据源控件的参数赋值,那么如何使用变量来赋值呢?
方法如下:
1、在前台代码中写好带参数的查询语句:
<asp:SqlDataSource ID="SqlDataSourcedown" runat="server" ConnectionString="<%$ ConnectionStrings:articleConnectionString %>"
SelectCommand="SELECT TOP (15) id, name, type FROM kejian WHERE (isfabu = 1) AND (kemuid = @kemuid) AND (lianjiid=@lianjiid) ORDER BY downn DESC">
<SelectParameters>
<asp:Parameter Name="kemuid" />
<asp:Parameter Name="lianjiid" />
</SelectParameters>
</asp:SqlDataSource>
2、在后台代码中加入如下语句:
int kemuid = 0;
int lianjiid = 0;
protected void Page_Load(object sender, EventArgs e)
{
int id = Convert.ToInt32(Request.QueryString["id"]);
string sql = "select kemuid,lianjiid from kejian where id=" + id;
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["articleConnectionString"].ConnectionString))
{
using (SqlCommand command = new SqlCommand(sql, connection))
{
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
if (reader.Read())
{
kemuid = (int)reader["kemuid"];
lianjiid = (int)reader["lianjiid"];
}
}
}
}
this.SqlDataSourcedown.SelectParameters.Clear();
this.SqlDataSourcedown.SelectParameters.Add("kemuid", System.TypeCode.Int32, kemuid.ToString());
this.SqlDataSourcedown.SelectParameters.Add("lianjiid", System.TypeCode.Int32, lianjiid.ToString());
}
请注意前后台代码中的红色部分,前后台代码中参数名一定要一致。就能实现使用变量来给参数赋值了。
是不是很简单很方便呢?
二、如何动态增减数据源控件参数并支持分页
适于环境:
页面search.aspx接受两个查询变量kemu及name,当kemu=0时进行全部科目的查询,当kemu!=0时进行当前科目的查询,并且要求对查询的结果进行分页。
实现方法:
在前台代码中加入:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:articleConnectionString %>"
SelectCommand="SELECT kejian.id, kejian.name, kejian.huanjing, kejian.type, kejian.downn, kejian.isfabu, kejian.stars, kejian.size, kejian.kemuid, kejian.updowntime, kemu.name AS kemu, lianji.name AS lianji FROM kejian INNER JOIN kemu ON kejian.kemuid = kemu.id INNER JOIN lianji ON kejian.lianjiid = lianji.id WHERE (kejian.name LIKE N'%' + @name + N'%') AND (kejian.kemuid = @kemu) AND (kejian.isfabu = 1) ORDER BY kejian.updowntime DESC">
<SelectParameters>
<asp:Parameter Name="name" />
<asp:Parameter Name="kemu" />
</SelectParameters>
</asp:SqlDataSource>
在后台代码中加入:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GridViewDataBind(Convert.ToInt32(Request.QueryString["kemu"]), Request.QueryString["name"]);
}
}
private void GridViewDataBind(int kemu, string name)
{
string sql = "SELECT kejian.id, kejian.name, kemu.name AS kemu, lianji.name AS lianji, kejian.huanjing, kejian.type, kejian.downn, kejian.stars, kejian.size, kejian.kemuid ";
sql += " FROM kejian INNER JOIN kemu ON kejian.kemuid = kemu.id INNER JOIN lianji ON kejian.lianjiid = lianji.id ";
sql += " WHERE (kejian.isfabu = 1) ";
if (kemu == 0)
{
sql += " AND (kejian.name LIKE N'%' + @name + N'%') ORDER BY kejian.updownuserid DESC";
this.SqlDataSource1.SelectParameters.Clear();
this.SqlDataSource1.SelectParameters.Add("name", System.TypeCode.String, name);
}
else
{
sql += " AND (kejian.kemuid = @kemu) AND (kejian.name LIKE N'%' + @name + N'%') ORDER BY kejian.updownuserid DESC";
this.SqlDataSource1.SelectParameters.Clear();
this.SqlDataSource1.SelectParameters.Add("kemu", System.TypeCode.String, kemu.ToString());
this.SqlDataSource1.SelectParameters.Add("name", System.TypeCode.String, name);
}
SqlDataSource1.SelectCommand = sql;
}
protected void GridView1_PageIndexChanged(object sender, EventArgs e)
{
GridViewDataBind(Convert.ToInt32(Request.QueryString["kemu"]), Request.QueryString["name"]);
}
相关文章推荐
- 如何使用变量给数据源控件参数赋值、如何动态增减数据源控件参数并支持分页
- 一、如何使用变量给数据源控件参数赋值
- 关于如何使用反射声明一个泛型类型变量(泛型参数是动态的)的问题
- 使用 OleDbParameter 变量 时要注意参数和参数数组,及数组赋值时的顺序
- 什么时候使用构造方法;this关键;private? 如何给成员变量赋值?
- 动态sql语句基本语法(字段名,表名,数据库名之类作为变量时,必须用动态SQL如ALTER TABLE中使用程序传递的参数)
- AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
- 执行动态 sql 并为 输出参数赋值、sp_executesql 使用方法
- Oracle中使用PL/SQL如何定义参数、参数赋值、输出参数和 if 判断
- orcle中如何使用动态游标来对变量进行赋值!
- SQl Server 动态SQL给变量赋值 和OBJECTPROPERTY函数使用及判断表 存储过程 视图等是否存在
- 反编译那些事儿(三)—那些看似没用到的全局变量和那些使用了动态参数的方法
- SQL分页参数传值 在存储过程中使用 动态SQL实现
- 如何通过offsetof 动态的给结构体或者类成员变量赋值
- AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
- 如何在报表参数中使用变量
- 在使用dhtmlxconnection for java时如何动态传入查询参数
- 动态sql语句基本语法(字段名,表名,数据库名之类作为变量时,必须用动态SQL如ALTER TABLE中使用程序传递的参数)
- Android 如何动态设置View参数,LayoutParams.addRules详解,TypedValue.applyDimension的使用
- 动态sql语句基本语法(字段名,表名,数据库名之类作为变量时,必须用动态SQL如ALTER TABLE中使用程序传递的参数)