应用实例
将点击在我的主页里面,点击“我开过的课”,页面跳转,显示我开过的课程信息。
界面设计
添加一个按钮,在按钮中写事件。
后台代码
按钮事件
protected void lbKaike_Click(object sender, EventArgs e)
{
string url = "/wenjian/lcts/list.aspx?fabuzhe=" + xingming;//xingming是在该页面已经读取出来了的
Response.Redirect(url);
}
protected void lbKaike_Click(object sender, EventArgs e)
{
string url = "/wenjian/lcts/list.aspx?fabuzhe=" + xingming;//xingming是在该页面已经读取出来了的
Response.Redirect(url);
}
这时候,那你问道:xingming是个什么东西?姓名其实就是你加载我的主页的时候,用户名的名称,已经被读取出来了。
//用来保存用户名
public string xingming;
xingming = sdr["xingming"].ToString();
//用来保存用户名
public string xingming;
xingming = sdr["xingming"].ToString();
至此只要我们点击按钮,按钮就能够跳转到list.aspx页面了。
但是list.aspx页面如何显示该用户的课程信息呢?
list.aspx
哦,该list页面是动软的三层代码生成器生成的,只要数据库中的表里面有数据,那么list.aspx就能够显示所有的课程页面信息。但是如何只显示?传过来的发布者的课程列表呢?我们可以先了解一些list.aspx页面的显示课程信息的原理。
First,list.aspx的cs的Pageload事件里面写了个 BindData();那就是要调用它咯。
BindData()可以干什么呢?显示课程数据啦!
那么只要我们的sql语句在读取数据表中的数据的时候,给它增加一点条件,让它只读取有发布者名称的数据信息,显示出来的不就是我们需要的课程表格吗?
不好意思,没有Second了。
SO,let's 增加条件,来一个条件吧。
public void BindData()
{
string fabuzhe = "";//将发布者先设定为空
fabuzhe = Request.QueryString["fabuzhe"];//如果由东西从URL上传来,那么string fabuzhe就是传递过来的值。
DataSet ds = new DataSet();
StringBuilder strWhere = new StringBuilder();
if (txtKeyword.Text.Trim() != "")
{
#warning 代码生成警告:请修改 keywordField 为需要匹配查询的真实字段名称
strWhere.AppendFormat("kcBiaoti like '%{0}%' or kcLeixing like '%{0}%'", txtKeyword.Text.Trim());
}
if (fabuzhe != "")//如果发布者不为空,那就是要求只显示发布者信息咯。
{
strWhere.AppendFormat("fabuzhe like '%{0}%' ", fabuzhe);//给SQL加上条件,数据的出来,发布者要是这个人哦<pre name="code" class="csharp"><pre name="code" class="csharp">//'%{0}%就是这个人 或甲或已或丙或丁......
}
ds = bll.GetList(strWhere.ToString());//获得一个实例化过的真真正正的dataset
gridView.DataSource = ds;
gridView.DataBind();
}
于是你的页面就只显示发布者是甲或乙或丙的开的课啦。
真棒!
作业
将课程页面的课程标题传递到微课页面,显示该课程信息,有多少节课等。
妈蛋,在gridview里面传递信息还可以这么干。
<asp:HyperLinkField HeaderText="标题" ControlStyle-Width="50" DataNavigateUrlFields="kcBiaoti"
DataNavigateUrlFormatString="/wenjian/MiroLcts/list.aspx?weikecheng={0}" Text="标题" />
下面就只剩下,在MiroLcts/list.aspx页面里面设定数据读取条件了。和上面的一样,只用添加三行代码就可以了,我用*标出来哦!
public void BindData()
{
string kechengID = "";//*
kechengID = Request.QueryString["kechengID"];//*
DataSet ds = new DataSet();
StringBuilder strWhere = new StringBuilder();
if (kechengID != "")
{
strWhere.AppendFormat("kechengID like '%{0}%'", kechengID);//*
}
ds = bll.GetList(strWhere.ToString());
gridView.DataSource = ds;
gridView.DataBind();
}