您的位置:首页 > 其它

一、如何使用变量给数据源控件参数赋值

2012-12-03 19:27 459 查看
一、如何使用变量给数据源控件参数赋值

在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"]);

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