ASP.NET的ItemTemplate用法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET的ItemTemplate用法相关的知识,希望对你有一定的参考价值。
在用DataList控件的时候肯定的要用到itemtemplate,现在我就跟大家怎么用它第一步:先把DataList控件绑定数据库中的某个表,代码如下:
SqlConnection con = new SqlConnection("server=.; uid=sa; pwd=密码; database=数据库");
SqlDataAdapter sd = new SqlDataAdapter("select ", con);
DataSet ds = new DataSet();
sd.Fill(ds, "LanMuName");
DataList1.DataSource = ds;
DataList1.DataBind();
第二步;再用itemtemplate绑定表里的某列,代码如下:
<asp:DataList ID="DataList1" runat="server" CellPadding="0">
<ItemTemplate>
<asp:Label ID= "CaptionLabel " runat= "server "
Text= '<%# DataBinder.eval_r(Container.DataItem,"shipname")%>'>
</ItemTemplate>
</asp:DataList>
通过上面两步就可以实现绑定了,现在我为大家解释一下
DataBinder.eval_r(Container.DataItem,"shipname")里各项是什么意思:
DataBinder:数据绑定管理器
Eval:求值
Container:被绑定到的容器,比如GridView,DataList等
DataItem:容器的数据项,包括项、交替模板行
shipname:绑定到容器的字段(来自数据库表字段即表中的列) 参考技术A 直接用table就可以了,在html4.0里面,table不仅仅有table,caption,tr,td这几个标签,还有tbody。
下面是我自己以前做过的一个项目,实现的功能就是标题只显示一次,数据循环输出。你可以根据需要修改一下即可。
<asp:Repeater ID="MyCart" runat="server" onitemcommand="MyCart_ItemCommand">
<HeaderTemplate>
<table border="1">
<caption>BabyPet ShoppingCart</caption>
<thead>
<tr>
<th>产品名称</th>
<th>产品价格</th>
<th>产品数量</th>
<th>移除</th>
</tr>
</thead>
<tbody>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><asp:Label id="LbName" runat="server" Text='<%#Eval ("ProductName") %>'></asp:Label>
<asp:HiddenField ID="HiddleProductId" runat="server" Value='<%# Eval("ProductId") %>' /></td>
<td><asp:Label id="LbPrice" runat="server" Text='<%#Eval ("ProductPrice") %>'></asp:Label> </td>
<td><asp:TextBox id="txtQuantity" runat="server" Text='<%#Eval ("ProductQuantity") %>' AutoPostBack="true" OnTextChanged="txtQuantity_TextChanged"></asp:TextBox>
<asp:HiddenField ID="HiddleProductQuantity" runat="server" Value='<%#Eval ("ProductQuantity") %>' /></td>
<td><asp:Button ID="DeleteBtn" runat="server" CommandName="Delete" Text="删除"/></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody>
</table>
下面的图片就是我实现的效果,应该是你需要的.
本回答被提问者采纳 参考技术B 直接用table就可以了,在html4.0里面,table不仅仅有table,caption,tr,td这几个标签,还有tbody。
下面是我自己以前做过的一个项目,实现的功能就是标题只显示一次,数据循环输出。你可以根据需要修改一下即可。
<asp:Repeater ID="MyCart" runat="server" onitemcommand="MyCart_ItemCommand">
<HeaderTemplate>
<table border="1">
<caption>BabyPet ShoppingCart</caption>
<thead>
<tr>
<th>产品名称</th>
<th>产品价格</th>
<th>产品数量</th>
<th>移除</th>
</tr>
</thead>
<tbody>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><asp:Label id="LbName" runat="server" Text='<%#Eval ("ProductName") %>'></asp:Label>
<asp:HiddenField ID="HiddleProductId" runat="server" Value='<%# Eval("ProductId") %>' /></td>
<td><asp:Label id="LbPrice" runat="server" Text='<%#Eval ("ProductPrice") %>'></asp:Label> </td>
<td><asp:TextBox id="txtQuantity" runat="server" Text='<%#Eval ("ProductQuantity") %>' AutoPostBack="true" OnTextChanged="txtQuantity_TextChanged"></asp:TextBox>
<asp:HiddenField ID="HiddleProductQuantity" runat="server" Value='<%#Eval ("ProductQuantity") %>' /></td>
<td><asp:Button ID="DeleteBtn" runat="server" CommandName="Delete" Text="删除"/></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody>
</table>
下面的图片就是我实现的效果,应该是你需要的.
另外,团IDC网上有许多产品团购,便宜有口碑 参考技术C <asp:TemplateField HeaderText="栏目图片" SortExpression="Pic">
<ItemTemplate>
<img src='<%# DataBinder.Eval(Container.DataItem,"Pic")%>‘ width=24 height=24 />
</ItemTemplate>
</asp:TemplateField> 参考技术D <ItemTemplate>
可以写你想让绑定的哪种类型的控件,以及赋值。
</ItemTemplate>
ASP.Net:ListView 的 ItemTemplate 中的条件逻辑
【中文标题】ASP.Net:ListView 的 ItemTemplate 中的条件逻辑【英文标题】:ASP.Net: Conditional Logic in a ListView's ItemTemplate 【发布时间】:2010-11-08 04:52:16 【问题描述】:我想根据绑定字段是否为空来显示ItemTemplate
的某些部分。以如下代码为例:
(为简洁起见,已删除 LayoutTemplate 等代码)
<asp:ListView ID="MusicList" runat="server">
<ItemTemplate>
<tr>
<%
if (Eval("DownloadLink") != null)
%>
<td>
<a href="<%#Eval("DownloadLink") %>">Link</a>
</td>
<%
%>
</tr>
</ItemTemplate>
</asp:ListView>
上面给出了以下运行时错误:
数据绑定方法,例如 Eval(), XPath() 和 Bind() 只能使用 在数据绑定控件的上下文中。
那么如何将一些条件逻辑(如上)放入ItemTemplate
中?
【问题讨论】:
这是目前让我有点发疯的事情。这在 ASP.net MVC 中非常简单,但在 webforms 中却是一场大戏 【参考方案1】:如何将控件的“可见”属性绑定到您的条件?比如:
<asp:ListView ID="MusicList" runat="server">
<ItemTemplate>
<tr runat="server" Visible='<%# Eval("DownloadLink") != null %>'>
<td>
<a href='<%#Eval("DownloadLink") %>'>Link</a>
</td>
</tr>
</ItemTemplate>
</asp:ListView>
【讨论】:
嗯,有趣的一点...但是在 ItemTemplate 中没有注入逻辑块的某种方法吗? 修改了您的答案以返回布尔值而不是字符串 我最近尝试过这个并得到一个运行时错误:“服务器标签格式不正确。” 我得到了同样的东西@Kyle,如果我找到解决办法,我一定会发布它。 修复了可能导致“服务器标签格式不正确”的锚标记中的引号。错误。【参考方案2】:解决“服务器标签格式不正确”。对于涉及可见性的答案,请从 Visible= 参数中删除引号。
所以会变成:
<tr runat="server" Visible=<%# Eval("DownloadLink") != null ? true : false %>>
【讨论】:
您也可以只在条件周围使用单引号。我有双引号并得到“服务器标签格式不正确”但是当我将它们更改为单引号时它工作正常。【参考方案3】:我不建议将此作为一种好方法,但您可以通过捕获 OnItemDataBound 事件中的当前项目,将其存储在公共属性或字段中,然后在条件逻辑中使用它来解决此问题。
例如:
<asp:ListView ID="MusicList" OnItemDataBound="Item_DataBound" runat="server">
<ItemTemplate>
<tr>
<%
if (CurrentItem.DownloadLink != null)
%>
<td>
<a href="<%#Eval("DownloadLink") %>">Link</a>
</td>
<%
%>
</tr>
</ItemTemplate>
</asp:ListView>
并在服务器端将以下代码添加到您的代码隐藏文件中:
public MusicItem CurrentItem get; private set;
protected void Item_DataBound(object sender, RepeaterItemEventArgs e)
CurrentItem = (MusicItem) e.Item.DataItem;
请注意,此技巧不适用于 UpdatePanel
控件。
【讨论】:
【参考方案4】:如果您有 2 个不同的结构要根据条件呈现,则使用面板
<asp:ListView ID="MusicList" runat="server">
<ItemTemplate>
<tr>
<asp:Panel ID="DownloadNull" runat="server" Visible="<%# Eval("DownloadLink") == null %>" >
<td> Album Description BlaBlaBla <img src="../images/test.gif"> </td>
</asp:Panel>
<asp:Panel ID="DownloadNotNull" runat="server" Visible="<%# Eval("DownloadLink") != null %>" >
<td> Album Description BlaBlaBla <img src="../images/test.gif">
<a href='<%# Eval("DownloadLink")' >Download</a>
.....
</td>
</asp:Panel>
</tr>
</ItemTemplate>
</asp:ListView>
【讨论】:
以上是关于ASP.NET的ItemTemplate用法的主要内容,如果未能解决你的问题,请参考以下文章
ASP.Net GridView 和 TemplateField 可见性 - false 但 ItemTemplate 仍在执行
在asp.net中使用datalist绑定数据的话,怎么取消ul前面的符号