在<ItemTemplate>中有一个linkbutton,<asp:LinkButton Runat="server" CommandName="downs" ><%#((PostInfo)Container.DataItem).FileName%></asp:LinkButton>
,然后在repeater的OnItemCommand事件中想通过e.Item.DataItem来获取值,但是跟踪时发现提示“未定义的值”,结果取不到对应那行的记录。但是我在一些例子中发现他们使用((DataRowView)e.Item.DataItem来获取对应行的记录,为什么我却不行呢?

解决方案 »

  1.   

    今天二帖了既然看到了,就帮你一把吧楼主应该用findcontrol方法来找dataitem里的控件,因为每个dataitem都会根据邦定数据来动态生成其内部的子控件,所以你光凭控件名是不能获取到该子控件的。 linkbutton lnkBtn=e.item.findcontrol("yourlnkbuttonname");这样就可以找到该子控件,然后就可以取其值或做其他事
      

  2.   

    when ItemCommand is triggered, DataItem is no longer available, you should do<asp:LinkButton id="yourlnkbuttonname" Runat="server" CommandName="downs"  Text='<%#((PostInfo)Container.DataItem).FileName%>'></asp:LinkButton>then in ItemCommand, use the method suggested by ztchenLinkButton lnkBtn=e.Item.FindControl("yourlnkbuttonname") as LinkButton;
    string s = lnkBtn.Text;
      

  3.   

    如果datagrid好像就可以取到对应行的记录?
      

  4.   

    搂主把datagrid怎样用啊?
    “我想要的是整个记录的多个字段来重组一个串”楼主这句话什么意思?
    “如果datagrid好像就可以取到对应行的记录?”楼主问题越来越深了,看不懂
      

  5.   

    如果想从DataGrid里面直接取值而不从数据库中取则需要遍历e.Item.Cells的所有元素来找到绑定的值。Cells代表当前行的所有列!
      

  6.   

    我后来用Session来保存了这个变量,不过这样就有一个问题,当这个客户通过其他连接再新建这个页面,那么session保存的旧页面的对象也就跟到这里来了,而且旧页面又还打开着,需要用到这个变量,那么是否这种情况都不应该用session来保存呢?我用viewstat来保存的时候,却提示“类型xxx必须标记为 Serializable 或者具有 ReferenceConverter 以外的 TypeConverter,才能被放置在视图状态中。”真不知道该如何来做了。
      

  7.   

    菜鸟的基础问题特别多,呵呵,多多包涵,发现使用ViewState还是很有好处的。