我有一个页面(default.aspx),其中一个Repeater从我的数据库中获取数据,这是Repeater的布局:
的Default.aspx:
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("Id","~/fullpost.aspx?Id={0}") %>'><asp:Literal ID="LitTitle" runat="server" Text='<%# Eval("Title") %>'></asp:Literal></asp:HyperLink>
<br />
<span class="textSum">
<asp:Literal ID="LitSummary" runat="server" Text='<%# Eval("Summary") %>'></asp:Literal></span>
<span class="dateTime">
<asp:Literal ID="Literal1" runat="server" Text='<%# Eval("CreateDateTime") %>'></asp:Literal></span>
现在注意超链接,它指向 fullpost.aspx ,在这个页面上我只想显示我点击的那个项目(URL指向右边,它转到 fullpost .aspx?Id = IdNumber ),所以我尝试了以下内容:
fullpost.aspx:
<asp:Literal ID="Literal1" runat="server" Text='<%# Eval("Title") %>'></asp:Literal>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:orangefreshConnectionString1 %>"
SelectCommand="SELECT [Id], [Title], [Summary], [Body], [CreateDateTime] FROM [Post] WHERE ([Id] = @Id)">
<SelectParameters>
<asp:QueryStringParameter Name="Id" QueryStringField="Id" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
但我的文字并没有显示我想要的标题,没有任何显示。我到底错在了什么?
添加数据绑定控件后:
<asp:FormView ID="FormView1" runat="server" DataSourceID="SqlDataSource1">
<asp:Literal runat="server" Text='<%# Eval("Title") %>'></asp:Literal>
</asp:FormView>
我现在得到: 分析器错误消息:类型“System.Web.UI.WebControls.FormView”没有名为“Literal”的公共属性。
答案 0 :(得分:1)
Literal1
不在data bound control内,无法从SqlDataSource
获取数据。把它放在类似于FormView
的内容中,并将其数据源设置为SqlDataSource1
。
编辑示例FormView
FormView包含一个名为<ItemTemplate>
的标记,其中包含您要显示的控件。注意:如果您使用类似Visual Web Developer的IDE,它将自动为您创建正确的标记结构。
<asp:FormView ID="FormView1" runat="server" DataSourceID="SqlDataSource1">
<ItemTemplate>
<asp:Literal runat="server" Text='<%# Eval("Title") %>' />
</ItemTemplate>
</asp:FormView>