取得Repeater控件主键

怎样取得Repeater控件主键,Repeater控件没有如Gridview的DataKeyNames属性。想获取Repeater记录的主键只有另想办法了。

下面这个例子,是在每笔记录行放一个Button(当然用LinkButton也可),用户点一点这个铵钮,即可获取这个记录。

.aspx(重点部分已经有注释):

View Code
    <!-- 技术重点是使用OnItemCreated,而不是使用OnItemDataBound -->
                
< asp:Repeater  ID ="Repeater1"  runat ="server"  OnItemCreated ="Repeater1_ItemCreated" >
                    
< HeaderTemplate >
                        
< table  border ="1"  cellpadding ="5"  cellspacing ="0"  width ="100%" >
                            
< tr >
                                
< td >
                                    ID
                                
</ td >
                                
< td >
                                    Name
                                
</ td >
                                
< td >
                                    Email
                                
</ td >
                                
< td >
                                    SELECT
                                
</ td >
                            
</ tr >
                    
</ HeaderTemplate >
                    
< ItemTemplate >
                        
< tr >
                            
< td >
                                
<% Eval ( " MemberId " %>
                                
<!-- 由于Repeater控件没有如GridView的DataKeyNames属性,因此放一个HiddenField控件 -->
                                
< asp:HiddenField  ID ="HiddenField1"  runat ="server"  Value ='<%#  Eval("MemberId") % > ' />
                            
</ td >
                            
< td >
                                
<% Eval ( " Name " %>
                            
</ td >
                            
< td >
                                
<% Eval ( " Email " %>
                            
</ td >
                            
< td >
                                
<!-- 只放一个Button,无需写什么,当然你拉一个LinkButton也可以 -->
                                
< asp:Button  ID ="Button1"  runat ="server"  Text ="Button"   />
                            
</ td >
                        
</ tr >
                    
</ ItemTemplate >
                    
< FooterTemplate >
                        
</ table >
                    
</ FooterTemplate >
                
</ asp:Repeater >

 

.aspx.cs:

View Code
using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Web;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  Insus.NET;

public   partial   class  Default2 : System.Web.UI.Page
{
    Member objMember 
=   new  Member();
    InsusJsUtility objJs 
=   new  InsusJsUtility();

    
protected   void  Page_Load( object  sender, EventArgs e)
    {
        
if  ( ! IsPostBack)
        {
            Data_Binding();
        }
    }

    
private   void  Data_Binding()
    {
        
this .Repeater1.DataSource  =  objMember.GetMember().Tables[ 0 ];
        
this .Repeater1.DataBind();
    }

    
// ItemCreated事件
     protected   void  Repeater1_ItemCreated( object  sender, RepeaterItemEventArgs e)
    {
        
if  (e.Item.ItemType  ==  ListItemType.Item  ||  e.Item.ItemType  ==  ListItemType.AlternatingItem)
        {
           
// 判断Button是否存在
             if  (e.Item.FindControl( " Button1 " !=   null )
            {
               
// 如果存在,把对象转换为Button。
                Button InsusButton  =  (Button)e.Item.FindControl( " Button1 " );
                
// 产生Click事件
                InsusButton.Click  +=   new  EventHandler(InsusButton_Click);
            }
        }
    }

    
// 如何获取主键
     private   void  InsusButton_Click( object  sender, EventArgs e)
    {
        Button button 
=  (Button)sender;
        
// 判断HiddenField是否存在
         if  (button.NamingContainer.FindControl( " HiddenField1 " !=   null )
        {
            
// 存在,把对象转换为HiddenField控件
            HiddenField hf  =  (HiddenField)button.NamingContainer.FindControl( " HiddenField1 " );
            
// 取出HiddenField的Value值。
             string  id  =  hf.Value;
           
            
// 取出之后,就可以在这里处理你的事情了,下面只是简单抛出而已。
            objJs.JsAlert( " 你选择的记录主键ID是 "   +  id);
        }
    }

}

 

选择结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值