none
Repeater绑定在SqlDataReader后,怎么获取Repeater里面的某行某列的值? RRS feed

  • 问题

  • Repeater绑定在SqlDataReader后,怎么获取Repeater里面的某行某列的值?

    开心了就笑,不开心了就过会儿再笑

    2012年5月9日 5:50

答案

  • Repeater绑定在SqlDataReader后,怎么获取Repeater里面的某行某列的值?

    开心了就笑,不开心了就过会儿再笑

    看你的Repeater——假设你是通过后台绑定,且使用Label什么控件显示的,那么你直接在Repeater_DataBound事件,或者是在DataBind()之后调用(Repeater.Items[索引].FindControl("某个Label的ID") as Label).Text;

    或者处理“ItemDataBound”事件,然后:

     public partial class WebForm1 : Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    Repeater rep = new Repeater();
                    rep.ItemDataBound += rep_ItemDataBound;
                    rep.DataSource = new[] {new{Id=1},new{Id=2} };
                    rep.DataBind();
                }
            }
    
            void rep_ItemDataBound(object sender, RepeaterItemEventArgs e)
            {
                object s = DataBinder.Eval(e.Item.DataItem, "Id");
                Response.Write(s.ToString());
            }
           
        }

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年5月9日 6:54
    版主
  • 哦,不好意思,我没看清。我是用table显示的,对应的列,我是用td显示的,这样的话,也可以使用你上面的方法嘛?如果使用你上面的方法,是不是要添加label呢?我的是直接在td里面绑定的,td里面什么都没有


    开心了就笑,不开心了就过会儿再笑

    建议用数据绑定控件显示,Table虽然是一个表格控件,但是不是用于数据绑定的。还是用我的方法。何况我的方法并不需要前台是否显示,直接从后台获取数据的。

    如果你坚持从前台取,那么绑定的ItemTemplate中必须使用Label,Text指定为<%#Eval("字段名称")%>,然后在Repeater_DataBound事件中使用:

    (Repeater.Items[索引].FindControl("id of label") as Label).Text……

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    • 已标记为答案 NewJoin 2012年5月15日 4:24
    2012年5月15日 2:13
    版主

全部回复

  • Repeater绑定在SqlDataReader后,怎么获取Repeater里面的某行某列的值?

    开心了就笑,不开心了就过会儿再笑

    看你的Repeater——假设你是通过后台绑定,且使用Label什么控件显示的,那么你直接在Repeater_DataBound事件,或者是在DataBind()之后调用(Repeater.Items[索引].FindControl("某个Label的ID") as Label).Text;

    或者处理“ItemDataBound”事件,然后:

     public partial class WebForm1 : Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    Repeater rep = new Repeater();
                    rep.ItemDataBound += rep_ItemDataBound;
                    rep.DataSource = new[] {new{Id=1},new{Id=2} };
                    rep.DataBind();
                }
            }
    
            void rep_ItemDataBound(object sender, RepeaterItemEventArgs e)
            {
                object s = DataBinder.Eval(e.Item.DataItem, "Id");
                Response.Write(s.ToString());
            }
           
        }

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年5月9日 6:54
    版主
  • 我就是在后台这样绑定的呀
    Repeater1.DataSource=dr;
    Repeater1.DataBind();
    而dr就是SqlDataReader

    开心了就笑,不开心了就过会儿再笑

    2012年5月12日 2:56
  • 我就是在后台这样绑定的呀
    Repeater1.DataSource=dr;
    Repeater1.DataBind();
    而dr就是SqlDataReader

    开心了就笑,不开心了就过会儿再笑

    请仔细看我上面的回答,或者提出你的新问题。我这样做是可以的,你试过吗?

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年5月12日 3:06
    版主
  • 哦,不好意思,我没看清。我是用table显示的,对应的列,我是用td显示的,这样的话,也可以使用你上面的方法嘛?如果使用你上面的方法,是不是要添加label呢?我的是直接在td里面绑定的,td里面什么都没有


    开心了就笑,不开心了就过会儿再笑

    2012年5月15日 2:07
  • 哦,不好意思,我没看清。我是用table显示的,对应的列,我是用td显示的,这样的话,也可以使用你上面的方法嘛?如果使用你上面的方法,是不是要添加label呢?我的是直接在td里面绑定的,td里面什么都没有


    开心了就笑,不开心了就过会儿再笑

    建议用数据绑定控件显示,Table虽然是一个表格控件,但是不是用于数据绑定的。还是用我的方法。何况我的方法并不需要前台是否显示,直接从后台获取数据的。

    如果你坚持从前台取,那么绑定的ItemTemplate中必须使用Label,Text指定为<%#Eval("字段名称")%>,然后在Repeater_DataBound事件中使用:

    (Repeater.Items[索引].FindControl("id of label") as Label).Text……

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    • 已标记为答案 NewJoin 2012年5月15日 4:24
    2012年5月15日 2:13
    版主