原理:用repeater控件,把所有内容都传递到客户端,设置style=display:none,然后通过操作按钮控制客户端脚本执行。
<HEAD>
...
<script language=javascript>
function ShowAndHide(ctl)
{
var postid = ctl.btnstatus;
var obj = document.getElementById("div"+postid);
if (obj != null)
{
if (obj.style.display=="")
{
obj.style.display = "none";
}
else
{
obj.style.display = "";
}
}
}
</script>
</HEAD>
<asp:repeater id="RecentPosts" runat="server">
<ItemTemplate>
<input type=Button ID="BtnContent" Runat = "server" onclick="javascript:ShowAndHide(this);" btnstatus='<%# DataBinder.Eval(((RepeaterItem)Container).DataItem,"PostID")%>' value = '<%# DataBinder.Eval(((RepeaterItem)Container).DataItem,"Title") %>' >
<asp:Literal runat = "server" Text ='<%# "<div id=div"+DataBinder.Eval(((RepeaterItem)Container).DataItem,"PostID").ToString() +" style=display:none >" + DataBinder.Eval(((RepeaterItem)Container).DataItem,"Text").ToString() + "</div>" %>' ID='DescriLit1'>
</asp:Literal>
</ItemTemplate>
</asp:repeater>
这里借用了一个Button 本没有的一个属性btnstatus,因为试了一下ShowAndHide('<%# DataBinder.Eval(((RepeaterItem)Container).DataItem,"PostID")%>')说,服务器表识错误,就随便加了一个属性了。
<HEAD>
...
<script language=javascript>
function ShowAndHide(ctl)
{
var postid = ctl.btnstatus;
var obj = document.getElementById("div"+postid);
if (obj != null)
{
if (obj.style.display=="")
{
obj.style.display = "none";
}
else
{
obj.style.display = "";
}
}
}
</script>
</HEAD>
<asp:repeater id="RecentPosts" runat="server">
<ItemTemplate>
<input type=Button ID="BtnContent" Runat = "server" onclick="javascript:ShowAndHide(this);" btnstatus='<%# DataBinder.Eval(((RepeaterItem)Container).DataItem,"PostID")%>' value = '<%# DataBinder.Eval(((RepeaterItem)Container).DataItem,"Title") %>' >
<asp:Literal runat = "server" Text ='<%# "<div id=div"+DataBinder.Eval(((RepeaterItem)Container).DataItem,"PostID").ToString() +" style=display:none >" + DataBinder.Eval(((RepeaterItem)Container).DataItem,"Text").ToString() + "</div>" %>' ID='DescriLit1'>
</asp:Literal>
</ItemTemplate>
</asp:repeater>
这里借用了一个Button 本没有的一个属性btnstatus,因为试了一下ShowAndHide('<%# DataBinder.Eval(((RepeaterItem)Container).DataItem,"PostID")%>')说,服务器表识错误,就随便加了一个属性了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架