将数据绑定到asp.net中的html5 DataList

µMa*_*Max 5 asp.net html5 datalist

我正在尝试使用HTML5.当我们将数据从数据表绑定到asp.net下拉控件时,是否可以将数据绑定到html5中的datalist.

我在哪里可以找到这个细节.任何指针都非常感激.:)

谢谢

Den*_*els 9

1)分配runat="server"给datalist,以便可以从后面的代码访问它:

Enter your favorite browser name:<br />
<input id="browserName" list="browsers" />
<datalist id="browsers" runat="server" /> 
Run Code Online (Sandbox Code Playgroud)

2)DataTable使用a 遍历,构造和连接选项列表,StringBuilder并将结果添加到InnerHtmldatalist 的属性中

    protected void Page_Load(object sender, EventArgs e)
    {
        DataTable table = new DataTable();
        table.Columns.Add("BrowserName");
        table.Rows.Add("IE");
        table.Rows.Add("Chrome");
        table.Rows.Add("Firefox");
        table.Rows.Add("Opera");
        table.Rows.Add("Safari");

        var builder = new System.Text.StringBuilder();

        for (int i = 0; i < table.Rows.Count; i++)
            builder.Append(String.Format("<option value='{0}'>",table.Rows[i][0]));
        browsers.InnerHtml = builder.ToString();
    }
Run Code Online (Sandbox Code Playgroud)

如果您需要在站点的多个位置使用此功能,您可以创建WCF服务并通过jQuery调用它,您可以在其中填充数据列表或创建如下的HTTP处理程序:

1)为项目添加一个通用处理程序,并将其命名为AutoCompleteHandler.ashx

2)在AutoCompleteHandler.ashx里面放:

public class AutoCompleteHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        context.Response.Clear();

        var options = new System.Text.StringBuilder();
        options.Append("<option value='IE'>");
        options.Append("<option value='Chrome'>");
        options.Append("<option value='Firefox'>");
        options.Append("<option value='Safari'>");
        options.Append("<option value='Opera'>");

        context.Response.Write(options.ToString());
        context.Response.End();
    }
    public bool IsReusable
    {
        get{return false;}
    }
}
Run Code Online (Sandbox Code Playgroud)

3)当页面加载并使用返回的结果填充datalist时,通过jQuery调用处理程序:

<script src="Scripts/jquery-1.9.1.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function () {
        $.post('AutoCompleteHandler.ashx', function (data) {
            $('#browsers').html(data);
        });
    });
</script>
Run Code Online (Sandbox Code Playgroud)

  • 你加倍努力。感谢您的详细回答和参考:) (2认同)