前台是一个DataList 代码如下:
<asp:DataList ID="DataList1" runat="server" CellPadding="4" ForeColor="#333333">
<HeaderTemplate >
<asp:Label ID="lbl" runat ="server" Text ='<%# Eval("TypeName") %>'>
</asp:Label><a href ="../Add.aspx" >添加</a>
</HeaderTemplate>
<ItemTemplate >
<a href ="../Show.aspx?PostId=<%#Eval("PostId") %> &TypeId=<%#Eval("TypeId") %>"><%#Eval("Title")%></a>
<asp:Label ID=lblName runat ="server" Text ='<%# Eval("UserName") %>'></asp:Label>
<asp:Label ID=Label1 runat ="server" Text ='<%# Eval("P_Date") %>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<a href ='../PostList.aspx?id=<%#Eval("TypeId") %>'>更多</a></FooterTemplate>
</asp:DataList>
后台代码很简单的:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
bind();
}
}
public void bind()
{
string sql = "select top 10 PostId,Title,P_Date,UserName,TypeName,Post.TypeId from Post,Type where Post.TypeId=Type.TypeId and Post.TypeId=1 order by Post.L_Date desc";
this.DataList1 .DataSource =DB.DataListBind(sql);
this.DataList1.DataBind();
}
页头里绑定的TypeName和页脚里传递的TypeId都不显示 而在<ItemTemplate>中传递的TypeId却能显示出来,请大家指点下。
哈哈,这个大概是你误解了控件 asp:DataList (或者是我误解了)。 DataList 原则上是包装了一个输出 Table 或 Flow 的类表结构的 HTML 块,印象中有个 Mode 可以设置为 Table/Flow。在进行配置的时候,这个 HTML 块的前端(Header)以及末端(Footor)允许用户自定义输出“静态HTML代码”。所以你这的绑定语句 Eval、Bind 等大概都是无效的。
我看你现在的代码形式,估计你是想要这样的效果:
<asp:DataList ID="DataList1" runat="server" CellPadding="4" ForeColor="#333333">
<HeaderTemplate >
</HeaderTemplate>
<ItemTemplate >
<asp:Label ID="lbl" runat ="server" Text ='<%# Eval("TypeName") %>'>
</asp:Label><a href ="../Add.aspx" >添加</a>
<a href ="../Show.aspx?PostId=<%#Eval("PostId") %> &TypeId=<%#Eval("TypeId") %>"><%#Eval("Title")%></a>
<asp:Label ID=lblName runat ="server" Text ='<%# Eval("UserName") %>'></asp:Label>
<asp:Label ID=Label1 runat ="server" Text ='<%# Eval("P_Date") %>'></asp:Label>
<a href ='../PostList.aspx?id=<%#Eval("TypeId") %>'>更多</a>
</ItemTemplate>
<FooterTemplate></FooterTemplate>
</asp:DataList>
最后,我也是臆测,DataList 用的不多,另外还没做实验,哈哈,楼主还是以实验、相关官方文档为主!
你这样,会用断点么,在string sql = "select top 10 PostId,Title,P_Date,UserName,TypeName,Post.TypeId from Post,Type where Post.TypeId=Type.TypeId and Post.TypeId=1 order by Post.L_Date desc";这句前面设置断点,看看取到的是什么???然后再说!很可能是你代码写的有问题,因为不知道你的2个表是什么结构!只能这样帮你了!呵呵!