日期:2014-05-17  浏览次数:20450 次

asp.net c# 在repeater中使用服务器控件
//代码:
<body>
  <form id="form1" runat="server">
  <div>
  <div align="center">  
  <asp:Repeater ID="Repeater1" runat="server">
  <ItemTemplate>
  <table style="border: 6px groove #C0C0C0; width: 682px; height: 190px">
  <tr>
  <td class="style1" rowspan="3">
  <img alt="<%# Eval("Fusername") %>&#10;积分:<%# Eval("Fintegral") %>" src="imgs/<%# Eval("Fphoto") %>" /></td>
  <td class="style3"><%# Eval("Fusername") %> 于<%# Eval("Ttime") %> 发布!</td>
  </tr>
  <tr>
  <td class="style2"><%# Eval("Tcontent") %></td>
  </tr>
  <tr>
  <td>
  <a href="#" title="<%# Eval("Femail") %>">电子邮件</a>
  <a href="#" title="浏览<%# Eval("Fusername") %>的个人主页"> 个人主页 </a>
  <a href="#"> 版主回复 </a>
  <asp:LinkButton ID="lbutdel" runat="server" CommandArgument="id" Text="删除"></asp:LinkButton>

  </td>
  </tr>
  </table>
  </ItemTemplate>
  </asp:Repeater>
  </div>
  </div>
  </form>
</body>
//---------
在后台cs代码中不能使用服务器控件LinkButton
不过把<asp:LinkButton ID="lbutdel" runat="server" CommandArgument="id" Text="删除"></asp:LinkButton>
这段代码放到Repeater控件外又可以使用。
这问题怎么决解~~


------解决方案--------------------
老生常谈了 不知道你有没有完整的看过一本哪怕是很垃圾的asp.net教程 都会说的如何从repeater gridview里面找控件
http://wenku.baidu.com/view/51bc0f0016fc700abb68fc8c.html
------解决方案--------------------
放在Repeater内的控件,需要在Repeater控件的OnItemDataBound事件通过FindControl方法来寻找该控件。
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound= "Repeater1_ItemDataBound" >

protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
LinkButton lb = (LinkButton)e.Item.FindControl( "lbutdel");
lb.Attributes.Add( "onclick ", "javascript:return confirm( '您确认删除吗? '); ");

}


方法二:

你这个是在Repeater控件内的LinkButton,如果想要实现删除功能,不需要找,直接处理LinkButton的OnCommand事件,获取到你的CommandArgument参数后,该干嘛干嘛


<asp:LinkButton ID="lbutdel" runat="server" CommandArgument='<%#Eval("id")%>' Text="删除" OnCommand="lbutdel_Command"></asp:LinkButton>

protected void lbutdel_Command(object sender,CommandEventArgs e)
{
string id = e.CommandArgument.ToString();
string strSQL = "delete from 表名 where ID="+id;
//执行删除逻辑,你懂的
}