原理:用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")%>')说,服务器表识错误,就随便加了一个属性了。