使用Javascript更改下拉列表数据
Change DropDownList data with Javascript
我有一个用户可以选择交易类型是账户间转账还是支付的页面。
我传入的模型有两个列表。一个是SelectListItem列表一个是SelectListItem
的列表其中一个列表是这样填充的:
var entities = new EntityService().GetEntityListByPortfolio();
foreach (var entity in entities.Where(x=>x.EntityTypeId == (int)Constants.EntityTypes.BankAccount))
{
model.BankAccounts.Add(new SelectListItem
{
Value = entity.Id.ToString(CultureInfo.InvariantCulture),
Text = entity.Description
});
}
如果用户选择'Inter account transfer',我需要:
用来自Accounts的列表填充DropdownA,并用相同的Accounts列表填充DropdownB
如果他们选择"付款",那么我需要将DrowdownB更改为ThirdParty列表。
是否有一种方法,使用javascript,改变列表源,客户端?
function changeDisplay() {
var id = $('.cmbType').val();
if (id == 1) // Payment
{
$('.lstSource'). ---- data from Model.ThirdParties
} else {
$('.lstSource'). ---- data from Model.Accounts
}
}
我不喜欢回拨,因为我希望它是快速的。
你可以通过jquery加载这些选项
Code is Updated
下面是代码
你会得到所有关于牛顿Json在http://json.codeplex.com/
c# CODE//You need to import Newtonsoft.Json
string jsonA = JsonConvert.SerializeObject(ThirdParties);
//Pass this jsonstring to the view by viewbag to the
Viewbag.jsonStringA = jsonA;
string jsonB = JsonConvert.SerializeObject(Accounts);
//Pass this jsonstring to the view by viewbag to the
Viewbag.jsonStringB = jsonB;
你会得到一个jsonstring,像这样
[{"value":"1","text":"option 1"},{"value":"2","text":"option 2"},{"value":"3","text":"option 3"}]
HTML CODE
<button onclick="loadListA();">Load A</button>
<button onclick="loadListB();">Load B</button>
<select name="" id="items">
</select>
JavaScript代码function option(value,text){
this.val= value;
this.text = text;
}
var listA=[];
var listB=[];
//you just have to fill the listA and listB by razor Code
//@foreach (var item in Model.ThirdParties)
//{
// <text>
// listA.push(new option('@item.Value', '@item.Text'));
// </text>
// }
//@foreach (var item in Model.Accounts)
// {
// <text>
// listA.push(new option('@item.Value', '@item.Text');
// </text>
// }
listA.push(new option(1,"a"));
listA.push(new option(2,"b"));
listA.push(new option(3,"c"));
listB.push(new option(4,"x"));
listB.push(new option(5,"y"));
listB.push(new option(6,"z"));
function loadListA(){
$("#items").empty();
listA.forEach(function(obj) {
$('#items').append( $('<option></option>').val(obj.val).html(obj.text) )
});
}
function loadListB(){
$("#items").empty();
listB.forEach(function(obj) {
$('#items').append( $('<option></option>').val(obj.val).html(obj.text) )
});
}
NEW Javascript Code for Json
var listA=[];
var listB=[];
var jsonStringA ='[{"val":"1","text":"option 1"},{"val":"2","text":"option 2"},{"value":"3","text":"option 3"}]';
var jsonStringB ='[{"val":"4","text":"option 4"},{"val":"5","text":"option 5"},{"value":"6","text":"option 6"}]';
//you just have to fill the listA and listB by razor Code
//var jsonStringA = '@Viewbag.jsonStringA';
//var jsonStringB = '@Viewbag.jsonStringB';
listA = JSON.parse(jsonStringA);
listB = JSON.parse(jsonStringB);
function loadListA(){
$("#items").empty();
listA.forEach(function(obj) {
$('#items').append( $('<option></option>').val(obj.val).html(obj.text) )
});
}
function loadListB(){
$("#items").empty();
listB.forEach(function(obj) {
$('#items').append( $('<option></option>').val(obj.val).html(obj.text) )
});
}
这里是小提琴http://jsfiddle.net/pratbhoir/TF9m5/1/
查看Json的新Jsfiddle http://jsfiddle.net/pratbhoir/TF9m5/3/
当然可以,所以
试
var newOption = "<option value='"+"1"+'>Some Text</option>";
$(".lstSource").append(newOption);
或
$(".lstSource").append($("<option value='123'>Some Text</option>");
或
$('.lstSource').
append($("<option></option>").
attr("value", "123").
text("Some Text"));
参考链接
B默认情况下,我不认为"数据源"的概念在html/javascript中有什么意义
然而,你正在寻找的解决方案是像knockoutjs
你将能够绑定一个视图模型到任何html元素,然后你将能够改变你的下拉列表的数据源
参见:http://knockoutjs.com/documentation/selectedOptions-binding.html
- 数据和HTML下拉列表
- 依赖下拉列表的数据验证
- 如何使用json数据创建下拉列表
- 在Moqui中,如何在html.ftl中加载数据库表数据作为下拉列表
- jQuery 设置和获取下拉列表和输入的本地存储数据
- 如何通过选择下拉列表中的选项从另一个 php 文件中获取数据
- 如何从 API 填充数据并加载到下拉列表中
- 如何在 PHP 中使用 OnChange 事件的下拉列表中选择一个选项后,对大量数据行设置分页
- 如何从下拉列表中填写表单数据
- 我创建了一个下拉列表,以及如何显示所选项目的其他列数据
- 禁用数据自动关闭下拉列表基金会只需在一个菜单中
- 如何根据数据动态创建引导下拉列表
- 如何将数据库中查询到的数据放在下拉列表和可点击按钮中
- 如何从php中第一个动态生成的第二个下拉列表将数据存储到数据库中
- 如何在从服务器获取数据的动态表的每一行中添加下拉列表
- 如何从LiveCycle中的下拉列表将一个子窗体中的数据填充到另一个子窗体的文本字段
- 使用 Web API 编辑获取数据时,无法将数据绑定到 jqgrid 中的下拉列表
- 使用数据库返回的数据动态填充下拉列表
- 使用Javascript更改下拉列表数据
- 如何在回发后保留下拉列表数据