目录
在Page_Load事件中绑定下拉框的数据来源和Repeater控件的数据源
使用DropDownList1_SelectedIndexChanged事件实现根据下拉框的值进行筛选查询
展示页效果:
点击内容查看博文详情:
展示页:
前端代码:
<style type="text/css">
*{
/*HyperLink标签去下划线*/
text-decoration:none;
color:black;
}
.auto-style2 {
width: 617px;
margin: 0px auto;
}
.auto-style3 {
width: 616px;
}
td {
width:610px;
height:80px;
white-space:nowrap;/*规定段落的文本不进行换行*/
overflow:hidden;/*关闭滚动条*/
text-overflow:ellipsis;/*溢出的文字显示为省略号*/
}
.bw{
margin-left:60%;
}
</style>
<div class="auto-style2">
类型:<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"></asp:DropDownList>
<asp:HyperLink ID="HyperLink2" CssClass="bw" runat="server" NavigateUrl="~/WebForm1.aspx">写博文</asp:HyperLink>
<hr />
<%--table-layout:fixed;内部布局固定大小,这个时候width就不会随着td长度变长--%>
<table class="auto-style3" style="table-layout:fixed;">
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<tr>
<th class="auto-style1">
<h2 style="text-align: left;"><%# Eval("tide")%></h2>
</th>
</tr>
<tr>
<th class="auto-style1" style="text-align: left;">
<%# Eval("auathor")%>
<samp><%# Eval("time")%></samp>
</th>
</tr>
<tr>
<td>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%#"~/WebForm3.aspx?id="+Eval("id")%>'><%# Eval("content")%></asp:HyperLink>
<hr />
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</div>
这里要注意table、td的样式和页面传值,确保博文内容不会全部展示出来。NavigateUrl='<%#"~/WebForm3.aspx?id="+Eval("id")%>'通过?别名=“传递的值”,这种方式将值传递到下一个页面
在Page_Load事件中绑定下拉框的数据来源和Repeater控件的数据源
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//绑定Repeater的数据源方法
sele();
//绑定DropDownList的数据源
this.DropDownList1.DataSource = My.Catelog.ToList();
this.DropDownList1.DataValueField = "Id";
this.DropDownList1.DataTextField = "Name";
this.DropDownList1.DataBind();
}
}
void sele()
{
//使用linq查询数据上下文Article表数据
var art = from article in My.Article
join catelog in My.Catelog on article.Catelogid equals catelog.Id//使用join连表查询
select new
{
id = article.Id,
tide = article.tide,
auathor = article.Auathor,
content = article.Content,
time = article.time,
};//挑选出自己要的数据字段,在用匿名对象存放
// 将查询出的数据绑定到Repeater1控件中
this.Repeater1.DataSource = art.ToList();
this.Repeater1.DataBind();
}
使用DropDownList1_SelectedIndexChanged事件实现根据下拉框的值进行筛选查询
//获取DropDownList1下标
int id = this.DropDownList1.SelectedIndex+1;
if (id == 1)
{
sele();
}
else
{
//使用linq查询数据上下文Article表数据
var art = from article in My.Article
join catelog in My.Catelog on article.Catelogid equals catelog.Id//使用join连表查询
where catelog.Id == id//筛选条件
select new
{
id = article.Id,
tide = article.tide,
auathor = article.Auathor,
content = article.Content,
time = article.time,
};//挑选出自己要的数据字段,在用匿名对象存放
// 将查询出的数据绑定到Repeater1控件中
this.Repeater1.DataSource = art.ToList();
this.Repeater1.DataBind();
这里要注意DropDownList中的AutoPostBack属性值为"True",不然点了没反应
详情页:
前端代码:
<style type="text/css">
* {
/*HyperLink标签去下划线*/
text-decoration: none;
color: black;
}
.box {
width: 1000px;
margin: 0px auto;
}
.auto-style1 {
width: 728px;
}
.auto-style2 {
width: 797px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div class="box">
<table class="auto-style2">
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<tr>
<th class="auto-style1">
<h2 style="text-align: left;"><%# Eval("tide")%></h2>
</th>
</tr>
<tr>
<th class="auto-style1" style="text-align: left;">
<%# Eval("auathor")%>
<samp><%# Eval("time")%></samp>
</th>
</tr>
<tr>
<td>
<%# Eval("content")%>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</div>
</form>
</body>
绑定详情页数据源:
接收上一个页面传递过来的值
int id = int.Parse(Request.QueryString["id"]);
使用传过来的值筛选出博文的详情
//创建一个EF数据上下文对象
MyBKEntities1 My = new MyBKEntities1();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//接收get提交过来的值
int id = int.Parse(Request.QueryString["id"]);
//使用linq查询数据上下文Article表数据
var art = from article in My.Article
join catelog in My.Catelog on article.Catelogid equals catelog.Id//使用join连表查询
where article.Id == id//筛选条件
select new
{
id = article.Id,
tide = article.tide,
auathor = article.Auathor,
content = article.Content,
time = article.time,
};//挑选出自己要的数据字段,在用匿名对象存放
// 将查询出的数据绑定到Repeater1控件中
this.Repeater1.DataSource = art.ToList();
this.Repeater1.DataBind();
}
}
案例到此结束,如有问题欢迎评论,如有更好方案可以一起讨论,万分感谢