如何在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。在这种情况下我该怎么办?非常感谢。
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);
}