..
假设我有一个用户选择旅行时间的组合框和另一个用户可以选择旅行ID 的组合框。
我想要做的就是当他选择其他“旅行ID”组合框改变自动以显示所有可用的旅行时,取决于他选择的时间第一个组合框。
所以我要做的是“在线更改”事件或“点击后”,如果它需要点击按钮
我正在使用带有C#和razor
的asp.net网页任何想法?
答案 0 :(得分:2)
我认为最好的方法是在第一个选择控件上设置js onchange事件处理程序,并通过HTTP GET请求从服务器加载第二个项目(使用jquery f e)。它是最优雅,简单和轻量级的解决方案。
<强> UPD:强> 如果您熟悉js,则可以从服务器返回JSON旅行ID数组,然后为每个数组创建适当的选项元素。如果你不这样做,你可以从服务器返回整个更新的选择控件html并用它替换现有的(这有点愚蠢的方法,但更容易一点)。
无论如何,整体方案是: 1.在服务器端创建可以返回json或html的内容(将Response内容类型设置为纯文本或服务方法的页面)并接受一个参数 - 从第一个选择开始的时间。 2.在onchange事件的js处理程序上,您对页面或服务方法(或控制器操作...)发出http get请求:
function timeChanged () {
$.getJSON(
'/pageorsomethingelse.aspx?time=' + time,
function (jsonResult) {
$("#tripIdsSelect").html("");
for (var i = 0; i != result.length; i++) {
var option = $("<option>").html(result[i]);
option.appendTo($("#tripIdsSelect"));
}
}
}
或
function timeChanged () {
$.get(
'/pageorsomethingelse.aspx?time=' + time,
function (htmlResult) {
$("#tripIdsSelect").replaceWith(htmlResult);
}
);
}
希望这有帮助。
答案 1 :(得分:1)
您可以使用ajax toolkit cascading dropdown list
<ajaxToolkit:CascadingDropDown ID="CDD1" runat="server"
TargetControlID="DropDownList2"
Category="Model"
PromptText="Please select a model"
LoadingText="[Loading models...]"
ServicePath="CarsService.asmx"
ServiceMethod="GetDropDownContents"
ParentControlID="DropDownList1"
SelectedValue="SomeValue" />
TargetControlID - 要填充的DropDownList的ID。
类别 - 此DropDownList所代表的类别的名称。
PromptText - 在用户从DropDownList中选择值之前显示的可选文本。
PromptValue - 显示PromptText时设置的可选值。
EmptyText - 当DropDownList没有要显示的数据时显示的可选文本。
EmptyValue - 显示EmptyText时设置的可选值。
LoadingText - DropDownList数据正在显示的可选文本 加载。
ServicePath - 返回用于填充DropDownList的数据的Web服务的路径。如果ServiceMethod引用页面方法,则此属性应保留为null。 Web服务应使用System.Web.Script.Services.ScriptService属性进行修饰。
ServiceMethod - 返回用于填充DropDownList的数据的Web服务方法。此方法的签名必须符合以下条件: