javascript-asp.net ajax 4.0客户端模板,如何绑定选择?
作者:互联网
我正在尝试创建一个简单的ajax网格,该网格允许我添加和删除行,还可以编辑某些列,并根据其他输入直接计算其他列.我认为这将是与asp.net ajax 4.0和客户端模板一起使用的绝佳机会.它工作正常,但我似乎找不到找到将json数据绑定到的方法.我怎样才能做到这一点?
普通模板如下所示
<div id="authorsTemplate" style="visibility:hidden;display:none;">
<ul>
<li>First Name: {{ FirstName }}</li>
<li>Last Name: {{LastName}}</li>
<li>Url: <a href="{{Url}}">{{Url}}</a></li>
</ul>
</div>
我如何在下拉菜单中使用数据绑定语法
<select id="">
<option value="1">1</option>
<option value="2">2</option>
</select>
编辑:
如果select标签具有value属性,则显而易见的解决方案是.
编辑2:
下面的语法实际上是解决方案,Thx Roatin,我不知道选择实际上具有值属性.
<select id="" value="{binding nr}">
<option value="1">1</option>
<option value="2">2</option>
</select>
我也许可以使用自定义javascript来设置选定的选项,但是关键是实时绑定到json对象,就像您绑定到输入标签的值一样
解决方法:
I do not want to populate the dropdown, it is already populated. I want to be able to use the client template binding syntax to get the value from my json object and set the selected element.
实际上,选择的DOM元素确实具有value属性(但未在标记中作为属性公开).设置它等同于(且比其快)迭代子< option> s并将selectedIndex设置为具有匹配值的选项的找到的选项索引.
无论如何,以下是使用Sys.Binding直接绑定到它的方法(完整的测试用例):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css">.sys-template {display:none}</style>
<script src="MicrosoftAjax.debug.js"></script>
<script src="MicrosoftAjaxTemplates.debug.js"></script>
<script type="text/javascript">
var dataItem = { Foo: '3' };
function pageLoad()
{
$create(Sys.Binding, {
target: $get("list"),
targetProperty: 'value',
source: dataItem,
path: 'Foo',
mode: Sys.BindingMode.twoWay
});
}
</script>
</head>
<body>
<select id="list">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</body>
</html>
如果您愿意,以下是声明式执行相同操作的方法:
<body xmlns:sys="javascript:Sys"
xmlns:binding="javascript:Sys.Binding"
sys:activate="*">
<select id="list"
sys:attach="binding"
binding:target="{{ $get('list') }}"
binding:targetproperty="value"
binding:source="{{ dataItem }}"
binding:path="Foo">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
(当然也要摆脱pageLoad JavaScript的东西…)
这两个示例都设置了与dataItem对象的双向绑定.您可以看到页面加载时的第三个< option>选项.被选中,因为该选项具有与dataItem.Foo匹配的值.当您从下拉列表中选择其他项目时,dataItem.Foo将使用选定的新值进行更新.
希望有帮助!
标签:client-templates,data-binding,asp-net-ajax,javascript 来源: https://codeday.me/bug/20191210/2101953.html