设想
我有一个邮政编码输入框。当您输入邮政编码时,它会调用 Web 服务并取回所有郊区名称并将它们绑定到一个列表,例如输入下拉列表。
当我List<string>
从 Web 服务返回一个名称时,这很有效。没问题。
当我将值保存到数据库时出现问题。当它被保存时,我无法在数据库的郊区列中保存郊区的名称。我必须为外键约束保存那个郊区的 id。
所以然后我稍微改变了List<>
事情并作弊并返回了以下内容。
<ArrayOfString>
<string>8213</string>
<string>BROOKFIELD</string>
<string>8214</string>
<string>CHAPEL HILL</string>
<string>8215</string>
<string>FIG TREE POCKET</string>
ETC....
这样做的原因是,我可以value
将下拉列表中的项目的 id 作为 id,因此可以将其保存在保存后的代码中。
为此,我执行了以下操作:
$(result).each(function (index, value) {
var suburbname;
var pattern = new RegExp('[0-9*]');
var m = pattern.exec(value);
if (m == null) {
suburbname = value
var o = new Option(suburbname, suburbid);
/// jquerify the DOM object 'o' so we can use the html method
$(o).html(suburbname);
$(document.getElementById('<%= suburb.ClientID %>')).append($("<option></option>")
.attr("value", suburbid)
.text(suburbname));
}
else {
suburbid = value
}
这也有效......下拉列表只有名称,而这些值是数字
问题....?
我在做我不喜欢的假设...即名称永远不会有数字,Web 服务将始终首先返回 id 以在第一次运行添加到下拉列表之前设置 id。只是感觉不对……:S(想法?)
因此,如果我将 Web 服务更改为返回数据表,则显示以下内容(这是整个查询返回的内容):
<Suburbs diffgr:id="Suburbs1" msdata:rowOrder="0">
<SuburbID>8213</SuburbID>
<SuburbName>BROOKFIELD</SuburbName>
<StateID>4</StateID>
<StateCode>07</StateCode>
<CountryCode>61</CountryCode>
<TimeZones>10.00</TimeZones>
<Postcode>4069</Postcode>
</Suburbs>
有没有办法在 js/jquery. 因此,当用户输入邮政编码时,Web 服务返回数据表,然后将其绑定到选择,其中 SuburbID 进入value
,名称进入文本???
还有其他方法可以从 Web 服务返回数据来解决这个问题吗?
注意:基本上我需要看起来像这样的选项:
<option value="8213">BROOKFIELD</option>
我还想我可以打第二个电话来获取文本绑定上的 id ......但我有点想只打一个电话......
非常感谢,
干杯罗宾
.net、C#、js、jquery、网络服务......
在比利的指导下解决
使用下面的其他方法添加到选择中不起作用,但是一旦我有了正确的变量,我的原始方法就可以了,所以就使用它....
服务返回:
<ArrayOfMyClass>
<MyClass>
<ID>8213</ID>
<Name>BROOKFIELD</Name>
</MyClass>
... ETC
js是:(注意:它是onchange
邮政编码输入框。它运行一个Web服务,然后成功运行以下)
function OnCompleted(result) {
var _suburbs = result;
var i = 0;
$(_suburbs).each(function () {
var SuburbName = _suburbs[i].Name;
var SuburbID = _suburbs[i].ID;
$(document.getElementById('<%= suburb.ClientID %>')).append($("<option></option>")
.attr("value", SuburbID)
.text(SuburbName));
i = i + 1;
});