如何制作响应式DataList asp.net

时间:2014-04-09 23:44:03

标签: css asp.net datalist

我的页面中有一个Asp.net DataList控件。它当前将repeatcolumns设置为4,这将给我每行4列。但是我想让这个响应更快,并将值设置为1以适应更小的屏幕尺寸。下面是我的asp.net控件:

<asp:DataList runat="server" RepeatDirection="Horizontal" RepeatColumns="4" ID="dd" class="vex-res">

我怎样才能做到这一点?

8 个答案:

答案 0 :(得分:6)

您不能使DataList具有响应性,因为它呈现为表。

相反,您需要使用ListView和bootstrap(或其他一些响应式框架)。

<asp:ListView ID="ListView1" runat="server" ...>
    ...
    <ItemTemplate>
        <div class="row">
            <div class="col-md-4"><%# Eval("Name") %></div>
            <div class="col-md-4"><%# Eval("Email") %></div>
            <div class="col-md-4"><%# Eval("Address") %></div>
        </div>
    </ItemTemplate>
</asp:ListView>

答案 1 :(得分:6)

这是我的工作之家:

<asp:DataList ID="dlCustomers" runat="server" RepeatDirection="Horizontal" RepeatLayout="Flow" CssClass="row">
    <ItemTemplate>
   <%-- <div class="row">--%>
    <div class="col-sm-4"><!--THUMBNAIL#2-->
    <div class="panel-body">
      <span class="label label-warning"><%# Eval("status")%></span>
      <div class="thumbnail label-success">
        <asp:Image ID="Image1" runat="server" ImageUrl='<%# "~/" +Eval("image1").ToString().Trim() %>' Width="150px" Height="150px" />
        <div class="caption"><h4>Rp.<small> <%# Eval("harga")%></small></h4>
          <strong><%# Eval("judul") %></strong>
          <p>
          <small>LT:<strong>  <%# Eval("luastanah")%> m2</strong> </small> <small> LB : <strong>  <%# Eval("luasbangunan")%> m2</strong> </small> 
          <small>Setifikat : <strong><%# Eval("sertifikasi")%></strong> </small> <br />
         <small> Kamar : <strong><%# Eval("kamartidur")%></strong> </small><br />
         <small> Kamar Mandi : <strong><%# Eval("kamarmandi")%></strong> </small>
          </p>
          <a href="#" class="btn btn-success">Lihat Details</a>
        </div>
      </div>
     </div>
     </div> 
      <%--</div>--%>
      </ItemTemplate>
</asp:DataList>

使用bootstrap响应3.3.6 ..

答案 2 :(得分:2)

稍晚一点,但我发现一个asp:repeater工作正常,并且不需要额外的CSS来使布局水平重复。

recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
            @Override
            public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
                return true;
            }
            @Override
            public void onTouchEvent(RecyclerView rv, MotionEvent e) {
            }
            @Override
            public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
            }
        });

我意识到这会导致一行中的总列数加起来超过12,但是因为这只会包裹到它下面的行,所以它并不重要。

参考:https://stackoverflow.com/questions/23502342/bootstrap-3-grid-does-it-really-matter-how-many-columns-are-in-a-row

答案 3 :(得分:2)

您也可以尝试设置RepeatLayout =&#34; Flow&#34;。这将使您的数据列表呈现为一系列<div>元素,这些元素的响应性更强。

答案 4 :(得分:1)

<asp:DataList ID="DataList1" runat="server"  OnItemDataBound="uxPosts_ItemDataBound1" cssClass="row" RepeatLayout="Flow" RepeatDirection="Horizontal">
        <ItemTemplate>
            <div class="col-sm-3 col-md-3 col-lg-3"><%# Eval("Name") %></div>
            <div class="col-sm-3 col-md-3 col-lg-3"><%# Eval("Email") %></div>
            <div class="col-sm-3 col-md-3 col-lg-3"><%# Eval("Address") %></div>
            <div class="col-sm-3 col-md-3 col-lg-3"><%# Eval("Phone") %></div>
        </ItemTemplate>
    </asp:DataList>

答案 5 :(得分:0)

    <asp:DataList ID="uxPosts" runat="server"  OnItemDataBound="uxPosts_ItemDataBound1" cssClass="row" RepeatLayout="Flow" RepeatDirection="Horizontal">
        <ItemTemplate>

            <a id="uxLink" runat="server" class="txt_link">
                <div class="col-xs-4 col-sm-4 col-md-4  " style="text-align:center;" >
                    <asp:Label ID="Label2" runat="server" Text='<%# Eval("Descripcion","{0:d}") %>'></asp:Label>  
                </div>

                <div class="col-xs-4 col-sm-4 col-md-4  " style="text-align:center;" >
                    <asp:Label ID="Label1" runat="server"  Text='<%# Eval("Descripcion","{0:d}") %>'></asp:Label>  
                </div>

                <div class="col-xs-4 col-sm-4 col-md-4  " style="text-align:center;" >
                    <asp:Label ID="Label4" runat="server" Text='<%# Eval("Descripcion","{0:d}") %>'></asp:Label>  
                </div>
            </a>

        </ItemTemplate>

    </asp:DataList>

答案 6 :(得分:0)

你可以用asp文字来做,把代码写在字符串中,然后添加到文字中, 假设您想动态显示项目 你可以这样做

添加html

<div class="any_css_class">
     <div class="any_css_class2">
         <asp:Literal ID="Literal1" runat="server"></asp:Literal>
    </div>
</div>

并在您的 cs 文件中

string htmlcode = ""; //code you want in your html
foreach (FetchedDetails fd in yourListOfItems)
{
    htmlcode += "<div class='content content-1' onclick=\"dosomething('" + fd.itemId + "')\"> " +
                    "<div class='fab fa-any_icon'></div> " +
                    "<h2>" + fd.anyAttribute + "</h2> ";
}

Literal1.Text = htmlcode; //add code to literal

这样就可以了。它会响应,但你必须正确定义你的 css :)

答案 7 :(得分:-3)

  <asp:DataList ID="uxPosts" runat="server"  OnItemDataBound="uxPosts_ItemDataBound1" cssClass="row" RepeatLayout="Flow" RepeatDirection="Horizontal">
        <ItemTemplate>
            <a id="uxLink" runat="server" class="txt_link">
                <div class=" col-xs-6 col-sm-4 col-md-3 col-lg-3  " style="text-align:center;" >
                    <div class="pnlborde">
                        <div class="encabezadofondo">
                            <asp:Label ID="Label2" runat="server" Height="38px" width="150px" Text='<%# Eval("Descripcion","{0:d}") %>'></asp:Label>  
                        </div>

                        <br />
                        <asp:Image ID="uxImage" runat="server" width="65%"  Height="90%" align="center" />
                        <br /><br />
                    </div>
                    <br />
                </div>
            </a>
        </ItemTemplate>
    </asp:DataList>