【问题标题】:Add space between list items, or make items easier to select on touchscreens in ASP.NET dropdownlist在列表项之间添加空格,或使项目更易于在 ASP.NET 下拉列表中的触摸屏上选择
【发布时间】:2012-10-25 14:27:48
【问题描述】:

在开发针对移动设备(主要是平板电脑)的 ASP.NET Web 应用程序时,我注意到如果用户的手指很粗,下拉列表有时很难选择正确的项目,或者只是没有。触摸屏非常好。

我知道我不是唯一一个注意到这一点的人,因为 IOS 应用程序出于这个原因专门不再使用下拉菜单,而是通常使用 UIPickerView 控件,它看起来像一卷卫生纸,但可以让人们更多通过滚动轻松地从列表中选择一个项目。

因此,我正在 ASP.NET 中寻找一种无需滚动我自己的自定义控件的好方法,以使下拉列表更易于在移动设备上使用,或者正在寻找一些我可以就地使用的免费控件的下拉列表。

首先想到的是;我可以以某种方式将列表项隔得更远,以便人们可以更轻松地选择他们想要的项目吗?我尝试将字体更改为更大,但这并没有真正帮助;特别是因为控制必须更宽,而问题实际上是项目之间有多少垂直空间。

如果没有,是否有人对他们如何解决这个问题有任何建议或现实生活中的例子?

非常感谢任何建议!

【问题讨论】:

    标签: c# asp.net mobile user-interface


    【解决方案1】:

    您始终可以使用 CSS。如果您想对 JS 感兴趣,您甚至可以根据浏览器的用户代理(桌面与移动)提供不同的样式表。

    /* Drop down control itself */
    select.ddlList {
        padding: 5px; /* padding between the border of the drop down and the items */
    }
    /* Drop down list items */
    select.ddlList > option {
        padding: 15px 5px; /* 15px = top/bottom padding, 5px = left/right padding */
    }
    

    使用 ASP.NET 控件...

    <asp:DropDownList ID="ddl" CssClass="ddlList" runat="server">
        <asp:ListItem ... />
        <asp:ListItem ... />
    </asp:DropDownList>
    

    编辑:嗯,Xander 是对的——你不能通过 CSS 设置选项的样式,但我的 DropDownList 样式示例仍然有效。这将使您的 DropDownList 对触摸客户端更加可见。 http://jsfiddle.net/DwY87/6/

    【讨论】:

      【解决方案2】:

      我在通过的项目中成功使用了DropKick.js。它克服了样式选择选项的不足,并通过 CSS 提供了对样式的更多控制。

      更新 (评论后)

      DropKick.js progressively enhances 在页面上呈现的 HTML(选择字段)。您需要做的就是提供适当的钩子,dropkick 需要将渲染的选择字段转换为其实现。

      来自 dropkicks 的主页:

      如何使用

      DropKick 的工作原理是将您现有的、无聊的 漂亮的、可定制的 HTML 下拉菜单。 name 属性是唯一的 一个是必需的。您还应该将 tabindex 属性设置为 通过选项卡启用导航。

      <select name="pretty" tabindex="1" class="pretty dk">
        <option value="">Choose a reaction</option>
        <option value="amazed">Amazed</option>
        <option value="bored">Bored</option>
        <option value="surprised">Surprised</option>
      </select>
      

      如何在asp.net中使用

      很简单,您可以下载 js 文件并将其包含在您的网站中:

      &lt;script type="text/javascript" src="js/dropkick.js"&gt;&lt;/script&gt;

      并包含样式的 css 文件:

      &lt;link rel="stylesheet" type="text/css" href="default.css"&gt;

      你快到了...现在你需要使用 jquery 将它添加到页面的下拉列表中,效果如下:

      $('#myDropDown').dropkick();

      或者

      $('.myDropDown').dropkick();

      【讨论】:

      • 看起来很有希望,但是如何将它与 ASP.NET 一起使用?我的意思是,我需要能够从后面的 ASP.NET 代码中填充下拉列表,并且我还需要能够在后面的 ASP.NET 代码中看到选定的值(我想后者可以通过填充来完成javascript隐藏字段中的选定值)。
      • @Jim-它只是一个js 文件,您可以将其包含在您的asp.net 页面中,然后将名称属性添加到您的下拉框中。非常好+1。
      • @JonH 对。但是,在 aspnet webforms 中,name 属性通常与dropdownlistid 服务器属性相同。尽管如此,这就是想法。
      • 对此的一些建议..在您使用它之前,请了解它所带来的后果。您不能再轻松地输入字母以直接进入下拉列表项。图书馆不允许这样做。因此,如果您有一个包含三个项目的下拉列表Blue, Bluey, Bar,并且在标准的 asp.net 下拉列表框中,您可以开始输入ba,它会将您带到bar。但是如果你实现了这个 js 解决方案,你就不能再这样做了。如果您正在处理小列表,那还不错,但是如果您有用户列表并且有很多用户列表,那么没有人会喜欢这个解决方案。
      • 将此标记为已接受,因为它确实很好地解决了我的问题,而且还没有其他人提供任何他们如何解决此问题的示例。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 2015-02-08
      相关资源
      最近更新 更多