后台处理DataTable通过web api返回json,前端调用接口绑定
关键代码你能写几步吗?从DataTable以后,到js里面怎么写,
@jinggege: 我只是提供你这种思路,我不清楚你的项目是通过什么向前端返回数据的,如果是采用web api向前端返回数据,后台序列化DataTable成json字符串,前端都过ajax请求web api成功之后,把数据绑定到select中
@MrNice: 我问你,我的DataTable里面有两列,我要怎么获取第二列一整列的值
@jinggege: 可以使用linq
@MrNice: 这个我不懂,有没有其他简单点的方法
@jinggege: foreach循环
完全可以
怎么写,写几步好吧
你既然想用js,直接返回一个json解析可以,还是举个用ViewData简单例子吧
<select id="addressDropdown" name="addressDropdown"> @{ var addressBooks = ViewData["AddressBook"] as IEnumerable<WebPrint.Model.AddressBook>; } @if (addressBooks != null) { foreach (var item in addressBooks) { <option value="@item.Id">在这里面加入你的table</option> } } <option value="0">Other</option> </select>
<option value="@item.Id" class="table">在这里面加入你的table</option>,你也可以在JS里面拼出来
在页面写个ajax提交,在后台读取你数据库存储的数据后,读取的数据是DataTable类型的,此时你需要把DataTable转换成list集合里面,在把list集合转换为JSON对象,ajax的data,参数就是你后台的json转换的那个方法,取出来值了就用Jquery赋值就OK了
using Newtonsoft.Json;
JavaScriptConvert.SerializeObject(List<Model>); //Model为数据
返回给ajax
前台处理下数据结构
var list=List<Model>;
var html="";
for (var i = 0; i < list.length; i++) {
html+='<option value="'+list[i].ID+'">'+list[i].Name+'</option>';
}
$("selectId").html(html);
直接用了蛮办法
html.aspx前台: <select id='s1' name='s1' > <option value="1">1</option> </select> <select id='s2' name='s2' > <option value="1">1</option> </select>
js: //选择s1后,加载s2中的选项 //ajax异步获取联动信息 $.get("Temp.aspx", { id: $("#s1").val() }, function (data) { $("#s2").html(data); });
Temp.aspx 后台: if (Request.QueryString["id"] != null) { string id= Request.QueryString["id"].ToString(); //根据id查询的table DataTable table = null; StringBuilder str = new StringBuilder(); foreach (DataRow dr in table.Rows) { str.AppendFormat("<option value=\"{0}\">{1}</option>",dr["id"],dr["name"]); } Response.Write(str.ToString()); }