以下代码的目的是:repeater中含button,该button控件的text要根据提取每条数据的"stat"字段(数据发布状态),分别显示为"发布"或"取消发布"。
HTML代码:     
<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand" DataSourceID="ObjectDataSource4">
                    <HeaderTemplate>
                    <table border=0>
              
            <tr><td>
          </HeaderTemplate>
 
          <ItemTemplate>
          
                            
              <tr>
                <td>
                   <asp:Button ID="Button1" runat="server" Text="" />
               </tr>             
           </ItemTemplate>                             
           <FooterTemplate>
         
          </table>
          </FooterTemplate>
test.aspx.cs:
otected void Repeater1_ItemCreated(Object Sender, RepeaterItemEventArgs e)
    {        if (e.Item.ItemIndex > 1)
        {
            Button aa = (Button)e.Item.FindControl("Button1");
            switch (e.Item.ItemIndex)
            {
                case 4: aa.Text = "发布";
                    break;                case 5: aa.Text = "不发布";                    break;                default: break;
            }
        }      }     以上代码在执行中出现问题:Repeater1_ItemCreated事件代码未被执行,各位兄弟帮忙看看是什么原因?

解决方案 »

  1.   

    好像应该在ItemDataBound事件里处理吧?ItemCreated时数据还没有绑定到Repeater上。
      

  2.   

    asp:Button ID="Button1" runat="server" Text="" />
    ==
    asp:Button ID="Button1" runat="server" Text='<%# Eval("stat").ToString() == "1" ? "发布" : "取消发布"%>' />
      

  3.   

    如果你打算再ItemDataBound事件中做,一般要做如下的判断    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
               //这里写你的代码
            }
        }
      

  4.   

    或者你可以在标记里直接判断,就像4楼amandag写的那样.