首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

Repeater控件的几点应用望指教解决思路

2012-03-11 
Repeater控件的几点应用望指教1:Repeater有个OnItemCommand事件,但是需要在Repeater里面的table或li标签里

Repeater控件的几点应用望指教
1:Repeater有个OnItemCommand事件,但是需要在Repeater里面的table或li标签里面放置一个服务器端按钮控件才可以触发,如果我直接点击行就触发这个事件?

2:Repeater有个OnItemDataBound事件,我想通过这个方法来实现展示的数据有光棒效果,但是实现出来后发现必须设置一<Tr>标签一个ID才可以是否还有其他方法

C# code
//这个是我实现的光棒效果protected void rep_data_ItemDataBound(object sender, RepeaterItemEventArgs e)    {        //row是前台<TR>标签的ID号        HtmlTableRow row = (HtmlTableRow)e.Item.FindControl("row");                  if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)        {            CommFun.RowOnMouse(row);//光棒效果           }    }


[解决办法]
原理是通过给tr一个点击事件,然后用js 的方法去回调服务器端的事件,但是由于Repeater里面生成的按钮id会不一样为了方便获取我采用了一个GetClientID(Container)方法吧服务器端控件的ID号保存到tr的name属性然后获取通过这个id就可以判断是哪个行的按钮提交的事件,然后后面的工作就和以前使用,Repeater的OnItemCommand事件一样了,望其他高手看有没有优化的更好的方法
C# code
web页面Repeater的部分代码<ItemTemplate> <tr  runat="server" onclick="do_show(this)"  name='<%# GetClientID(Container)%>'>  <td style="display:none;">    <asp:Button ID="btn_1" runat="server"  CommandArgument='<%# Eval("Tb_Name")%>' />  </td> </tr></ItemTemplate> //点击行调用后台事件rep_data_ItemCommand function do_show(obj) {  document.getElementById(obj.name).click();  }后台页面 /// 获取服务器端的ID protected string GetClientID(Control ctrl) {  string btnClientID = ctrl.FindControl("btn_1").UniqueID;  return btnClientID; } 

热点排行