您的位置:首页 > 其它

如何使用变量给数据源控件参数赋值、如何动态增减数据源控件参数并支持分页

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"]);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐