如何在ASP.NET中返回要生成的DataTable类型json(Group DropdownList)

本文关键字:类型 DataTable json DropdownList Group ASP NET 返回 | 更新日期: 2023-09-27 18:21:38

我想在sql server中用数据库制作分组下拉列表。但这仍然是错误的。我可以将数据类型DataTable返回到webform.aspx以设置分组下拉列表吗。我知道这很难说。但我认为当我向你展示我的代码时,你可以理解得更多。

这是我在aspx中的代码,带有类似的脚本

<script type="text/javascript">
$('#<%=ddReport.ClientID %>').append(
            $('<option></option>').val('0').html('Please Wait...')
            );
        $.ajax({
            url: "insertForm.aspx/GetreportDoctor",
            data: "{}",
            type: "POST",
            dataType: "json",
            contentType: "application/json; charset-utf-8",
            success: OnSuccess,
            error: OnError
        });
        //for get selected value from codebehide
        $('#<%= ddReport.ClientID%>').change(function () {
            $('#<%= hfSelectedValue.ClientID%>').val($('#<%= ddReport.ClientID%>').val());
        });
    });
    function OnSuccess(data) {
        $('#<%= ddReport.ClientID%>').empty();
        var dt = data;
        var dropdown = $('#<%=ddReport.ClientID%>');
        var order = "";
        var optGroup;
        for (var i = 0; i < dt.Rows.Count; i++) {
            if (dt.Rows[i]["create_by"].toString() != order) {
                optGroup = $("<optgroup style='background-color:#CCCC00' />");
                optGroup.attr('label', dt.Rows[i]["create_by"].toString());
            }
            order = dt.Rows[i]["create_by"].toString();
            optGroup.append(
                    $('<option></option>').val(dt.Rows[i]["rowID"].toString()).html(dt.Rows[i]["encode"])
                );
            dropdown.append(optGroup);
        }
        //for keep value after postback
        $('<%=ddReport.ClientID%>').val($('#<%= hfSelectedValue.ClientID%>').val());
    }
    function OnError() {
        alert("Failed!!!");
    }
 </script>

这是我在码边中获取数据的代码

[WebMethod]
    public static DataTable GetreportDoctor() {
        Dictionary<string, string> report_doc = new Dictionary<string, string>();
        SqlDataReader dr;
        DataTable dt = new DataTable();
        SqlConnection EMR_Conn = new SqlConnection(@"Data Source=192.168.24.36;Initial Catalog=EMR;Persist Security Info=True;User ID=sa;Password=bpk$1234");
        EMR_Conn.Open();
        SqlCommand cmd_select = new SqlCommand("select rowID, encode, create_by FROM MED_main order by create_by", EMR_Conn);
        dr = cmd_select.ExecuteReader();
        dt.Load(dr);
        return dt;
    }

当我运行项目时,它会循环OnError。在这种情况下我该怎么办?非常感谢。

如何在ASP.NET中返回要生成的DataTable类型json(Group DropdownList)

1)您可以返回xml

数据表.WriteXml

jQuery或Select2能够处理xml输入。

2) 如果你想要json,你可以使用我的方法

//add reference System.Data
//add reference System.Web.extensions
//add reference System.Web.DataTableExtensions
public static string ConvertToJson(DataTable dt, int page = 0, int count = 100)
{
    var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
    var rows = new List<Dictionary<string, object>>();
    foreach (DataRow dr in dt.AsEnumerable().Skip(page * count).Take(count).ToList())
    {
        rows.Add(dt.Columns.Cast<DataColumn>().ToDictionary(col => col.ColumnName, col => dr[col]));
    }
    return serializer.Serialize(rows);
}
相关文章: