1

我想从我使用 jquery mobile、asp.net、C# 和 sql server 数据库的数据库中填充一个列表

我编写了一个服务来从数据库中获取数据作为 dtataset 但我无法将数据集转换为 json 可以理解的内容

所以这是我的服务

[System.Web.Services.WebMethod]
    public static DataSet GetProducts()
    {
        string query = "SELECT [product] ,[img1] ,[descr] FROM [ELQ].[dbo].[products]";
        SqlCommand cmd = new SqlCommand(query);

        return GetData(cmd);

    }
    private static DataSet GetData(SqlCommand cmd)
    {
        string connString = "Data Source=GHOST-PC\\STC;Initial Catalog=ELQ_z;Integrated Security=True";
        using (SqlConnection con = new SqlConnection(connString))
        {
            using (SqlDataAdapter sda = new SqlDataAdapter())
            {
                cmd.Connection = con;
                sda.SelectCommand = cmd;
                using (DataSet ds = new DataSet())
                {
                    sda.Fill(ds);
                    return ds;
                }
            }
        }
    } 

这是我的清单

 <ul data-role="listview" data-inset="true" data-filter="true">
                <li><a href="ray.html">
                    <img src="pic/ip5.jpg">
                    Iphone </a></li>
                <li><a href="scott.html">
                    <img src="pic/s2.jpg">
                    S2</a></li>
                <li><a href="todd.html">
                    <img src="pic/s3.jpg">
                    S3</a></li>
                <li><a href="dave.html">
                    <img src="pic/nt2.jpg">
                    note2</a></li>
            </ul>

我如何将其转换为 json 并使用 ajax 填充列表

4

2 回答 2

1

您在 ASP.Net 中使用什么 API?您使用的是 Web 表单,还是 mvc 或 webapi?

如果您想保持上述代码,您将需要创建一个 DTO(数据传输对象)类并从您的数据集中填充它。然后,您可以使用 Json.Net 对其进行序列化,您可以使用 NuGet 轻松安装它。

可能更好的选择是使用 WebAPI 和实体框架。WebAPI 将为您进行序列化。这是创建 API 的好方法,您的 jQuery Mobile 应用程序可以访问 GET、POST、PUT 和 Delete 数据。

我敢肯定,如果您在 Google 上开始使用 WebAPI,您会发现许多打印和视频形式的入门教程。

于 2013-03-14T22:42:53.237 回答
1

我使用了 DTO(数据传输对象)方式,这是我的代码

首先我写了一个类产品

public class product
{
    //[product] ,[img1] ,[descr]
    public string name;
    public string img1;
    public string descr;

}

然后我将 getdata() 方法更改为这样

[WebMethod]
    public List<product> getdata()
    {
        List<product> productt = new List<product> {};
        string query = "SELECT [product] ,[img1] ,[descr] FROM [ELQ].[dbo].[products]";
        SqlCommand cmd = new SqlCommand(query);
        DataSet ds = GetData(cmd);
        DataTable dt = ds.Tables[0];
        foreach(DataRow item in ds.Tables[0].Rows)
        {
            product pro = new product();
            pro.name = item["product"].ToString();
            pro.img1 = item["img1"].ToString();
            pro.descr = item["descr"].ToString();
            productt.Add(pro);
        }

        return productt; 
    }
于 2013-03-15T03:22:09.420 回答