【问题标题】:Alternating Item Style交替项目样式
【发布时间】:2008-10-23 02:48:07
【问题描述】:

我实际上很想在 GridView 上有一个 AlternatingItemTemplate,但它提供的只是一个 AlternatingItemStyle。在我的网格中,每两列行(在表格布局中)在第一列中有一个图像,在第二列中有一个描述。我希望图像和描述的位置在交替行上交替出现。

我该怎么做?

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    这是一种方法:

    ASP.NET:

    <asp:Repeater runat="server" ID="Repeater1" OnItemDataBound="Repeater1_ItemDataBound" />
    

    ItemDataBound 事件:

    public void Repeater1_ItemDataBound(Object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.AlternatingItem)
        {
            // e.Item is an alternating item
        }
        else
        {
        }
    }
    

    【讨论】:

      【解决方案2】:

      您可能会考虑使用 AlternatingItemStyle 来管理它以获得乐趣。

      使用 1 列或中继器:

      物品模板:

      <div class="MyImage"><img src="" /></div>
      <div class="MyDescription">Blah...Blah...</div>
      

      CSS:

      .MyItemStyle .MyImage {width:49%; float:left;}
      .MyItemStyle .MyDescription {width:49%; float:right;}
      
      .MyAltItemStyle .MyImage {width:49%; float:right;}
      .MyAltItemStyle .MyDescription {width:49%; float:left;}
      

      应用于 Gridview/Repeater:

      ItemStyle = "MyItemStyle"
      AlternatingItemStyle = "MyAltItemStyle"
      

      这会让您改变主意,而无需重新编码事件处理程序等。

      【讨论】:

      • 我知道这是一篇旧帖子,但我只是偶然看到它,我只是想为未来的访问者做笔记。 Repeater 控件没有 AlternatingItemStyle 属性(或 ItemStyle )。但是,它确实有 AlternatingItemTemplate... Gridview 没问题。
      【解决方案3】:

      我认为这会起作用:

       <asp:GridView>
          <Columns>
              <asp:TemplateColumn>
                  <%# Container.DataItemIndex % 2 == 0 ? Eval("Image") : Eval("Desc") %>
              </asp:TemplateColumn>
              <asp:TemplateColumn>
                  <%# Container.DataItemIndex % 2 == 0 ? Eval("Desc") : Eval("Image") %>
              </asp:TemplateColumn>
          </Columns>
       </asp:GridView>
      

      显然,Eval 图像确实需要是一个 img 标签,或者您可以替换一些用户控件等。重要的是 Container.DataItemIndex % 2。您甚至可以将它用作可见的数据绑定。

       <asp:GridView>
          <Columns>
              <asp:TemplateColumn>
                  <uc:Image Data='<%# Eval("Image") %>' 
                    Visible='<%# Container.DataItemIndex % 2 == 0 %>' />
                  <uc:Description Data='<%# Eval("Description") %>' 
                    Visible='<%# Container.DataItemIndex % 2 != 0 %>' />
              </asp:TemplateColumn>
              <asp:TemplateColumn>
                  <uc:Image Data='<%# Eval("Image") %>' 
                    Visible='<%# Container.DataItemIndex % 2 != 0 %>' />
                  <uc:Description Data='<%# Eval("Description") %>' 
                    Visible='<%# Container.DataItemIndex % 2 == 0 %>' />
              </asp:TemplateColumn>
          </Columns>
       </asp:GridView>
      

      【讨论】:

        【解决方案4】:

        您将需要处理数据绑定事件以尝试确定它是项目还是交替项目,或者切换到使用支持 Item 和 AlternatingItem 模板的控件。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-11-24
          • 2021-03-21
          • 2023-04-01
          • 1970-01-01
          相关资源
          最近更新 更多