如何设置路径值在Telerik的组合框客户端 [英] How can i set route value in client side for Telerik combobox
问题描述
我有两个组合框。我需要得到第一combobox1一些价值combobox1改变了价值,而把这个值Combobox2航线后
databinding.Ajax()选择。(行动,控制器 - >路线和LT;< - )
块引用>@(Html.Telerik()
.ComboBoxFor(M => m.Country)
.ClientEvents(E => e.OnChangeonCountryChange))
.BindTo(Model.ListCountry)) @(Html.Telerik()
.ComboBoxFor(M => m.UnitOfAdministration)
.ClientEvents(E => e.OnChange(onCityChange))
.BindTo(Model.ListUnitOfAdministration)
.DataBinding(绑定=>
bind.Ajax(),选择(GetCityListByStr,用户,新{idCountry =在这个地方,我需要把CURENT国家ID})
.Delay(1000))功能onCountryChange(五){
VAR fildUnit = $(#fild_UnitOfAdministration);
VAR fildStreet = $(#fild_Street),隐藏()。
VAR fildHouse = $(#fild_House),隐藏()。
VAR fildSegmentHouse = $(#fild_SegmentHouse),隐藏()。
VAR curCountry =号(e.value);
如果(curCountry.toString()==南|| curCountry == 0){
fildUnit.hide();
}其他{
$。员额(@(Url.Action(GetCityList,用户)),{ID:curCountry,ASD:的Math.random()},
功能(数据){
fildUnit.show();
VAR组合框= $('#UnitOfAdministration')的数据(tComboBox')。
comboBox.dataBind(数据);
comboBox.select(0);
});
}
} [HttpPost]
公众的ActionResult GetCityList(字符串ID)
{ INT _id = id.ExtractID();
计算机[curCountry] = _id;
清单< SelectListItem> listSel =新的List< SelectListItem>();
listSel.Add(新SelectListItem(){文本=Виберітьмісто,值=0,选定=真});
TUnitOfAdministration UN = TUnitOfAdministration.GetObject(_id);
如果(联合国!= NULL)
{
串的SQL =LFT>中+ un.Lft +和RGT< + un.Rgt +,并在(2,3)按名字顺序TypeUnit
TypedBindingList列表= TUnitOfAdministration.GetObjects(SQL);
的foreach(在列表TUnitOfAdministration项)
{
listSel.Add(新SelectListItem的{text = item.Name,值= item.ID.ToString()});
}
}
返回新JsonResult {数据=新的SelectList(listSel,值,文本,0)};
}
[HttpPost]
公众的ActionResult GetCityListByStr(字符串文本,字符串idCountry)
{
文字= text.ClearStringFull();
INT _idCountry = idCountry.ExtractID();
清单< SelectListItem> listSel =新的List< SelectListItem>();
TypedBindingList名单=新TypedBindingList(typeof运算(TUnitOfAdministration));
listSel.Add(新SelectListItem(){文本=Виберітьмісто,值=0,选定=真});
TUnitOfAdministration国家= TUnitOfAdministration.GetObject(_idCountry);
如果(国家!= NULL)
{
字符串sqlAll =ID_UnitOfAdministration =+ country.ID_UnitOfAdministration +和类似名称'+文字+%按名称订单;
清单= TUnitOfAdministration.GetObjects(sqlAll); //如果(list.Count == 0)
// {
//字符串SQL =LFT>中+ country.Lft +和RGT< + country.Rgt +,并在(2,3)按名字顺序TypeUnit
//列表= TUnitOfAdministration.GetObjects(SQL);
//} 的foreach(在列表TUnitOfAdministration项)
{
listSel.Add(新SelectListItem的{text = item.Name,值= item.ID.ToString()});
}
}
返回新JsonResult {数据=新的SelectList(listSel,值,文本,0)};
}先谢谢了。
解决方案<击>你可以从目前的RouteData获取它:
新{curentCountry = ViewContext.RouteData.Values [countryID]}
其中,
countryID
是您正在使用的路由参数的名称。或者如果它是查询字符串的一部分,而不是你的路由的一部分:新{curentCountry =请求[countryID]}
击>
您可以看一看的<一个href=\"http://www.telerik.com/help/aspnet-mvc/telerik-ui-components-combobox-data-binding-client-side-binding.html\"相对=nofollow>文档这说明你怎么可以订阅当一个请求来获取数据正在取得其提出的
OnDataBinding
事件:所以,你可以订阅
OnDataBinding
事件:@(Html.Telerik()
.ComboBoxFor(M =&GT; m.UnitOfAdministration)
.ClientEvents(E =&GT; e.OnDataBinding(onComboBoxDataBinding))
.BindTo(Model.ListUnitOfAdministration)
.DataBinding(绑定=方式&gt; bind.Ajax()选择(GetCityListByStr,用户)
.Delay(1000)
)和它允许你传递额外的参数这一要求
&LT;脚本类型=文/ JavaScript的&GT;
功能onComboBoxDataBinding(五){
e.data = $ .extend({},e.data,{curentCountry:customValue});
}
&LT; / SCRIPT&GT;I have two combobox. I need get some value from first combobox1 after combobox1 has changed value and that put this value in Combobox2 route
databinding.Ajax().Select("action","controller",-->route<<-)
@(Html.Telerik() .ComboBoxFor(m => m.Country) .ClientEvents(e => e.OnChange"onCountryChange")) .BindTo(Model.ListCountry)) @(Html.Telerik() .ComboBoxFor(m => m.UnitOfAdministration) .ClientEvents(e => e.OnChange("onCityChange")) .BindTo(Model.ListUnitOfAdministration) .DataBinding(bind => bind.Ajax().Select("GetCityListByStr", "User",new { idCountry = "in this place i need put curent country ID" }) .Delay(1000)) function onCountryChange(e) { var fildUnit = $("#fild_UnitOfAdministration"); var fildStreet = $("#fild_Street").hide(); var fildHouse = $("#fild_House").hide(); var fildSegmentHouse = $("#fild_SegmentHouse").hide(); var curCountry = Number(e.value); if(curCountry.toString() == "NaN" || curCountry==0){ fildUnit.hide(); }else{ $.post("@(Url.Action("GetCityList", "User"))", { id:curCountry, asd:Math.random() }, function (data) { fildUnit.show(); var comboBox = $('#UnitOfAdministration').data('tComboBox'); comboBox.dataBind(data); comboBox.select(0); }); } } [HttpPost] public ActionResult GetCityList(string id) { int _id = id.ExtractID(); ViewData["curCountry"] = _id; List<SelectListItem> listSel = new List<SelectListItem>(); listSel.Add(new SelectListItem() { Text = "Виберіть місто", Value = "0", Selected = true }); TUnitOfAdministration un = TUnitOfAdministration.GetObject(_id); if (un != null) { string sql = "lft>" + un.Lft + " AND RGT<" + un.Rgt + " AND TypeUnit in (2,3) order by Name"; TypedBindingList list = TUnitOfAdministration.GetObjects(sql); foreach (TUnitOfAdministration item in list) { listSel.Add(new SelectListItem { Text = item.Name, Value = item.ID.ToString() }); } } return new JsonResult { Data = new SelectList(listSel, "Value", "Text", 0) }; } [HttpPost] public ActionResult GetCityListByStr(string text,string idCountry) { text = text.ClearStringFull(); int _idCountry = idCountry.ExtractID(); List<SelectListItem> listSel = new List<SelectListItem>(); TypedBindingList list = new TypedBindingList(typeof(TUnitOfAdministration)); listSel.Add(new SelectListItem() { Text = "Виберіть місто", Value = "0", Selected = true }); TUnitOfAdministration country = TUnitOfAdministration.GetObject(_idCountry); if (country != null) { string sqlAll = "ID_UnitOfAdministration = " + country.ID_UnitOfAdministration + " AND Name like '" + text + "%' Order by name"; list = TUnitOfAdministration.GetObjects(sqlAll); //if (list.Count == 0) //{ // string sql = "lft>" + country.Lft + " AND RGT<" + country.Rgt + " AND TypeUnit in (2,3) order by Name"; // list = TUnitOfAdministration.GetObjects(sql); //} foreach (TUnitOfAdministration item in list) { listSel.Add(new SelectListItem { Text = item.Name, Value = item.ID.ToString() }); } } return new JsonResult { Data = new SelectList(listSel, "Value", "Text", 0) }; }
Thanks in advance.
解决方案
You could fetch it from the current RouteData:new { curentCountry = ViewContext.RouteData.Values["countryID"] }
where
countryID
is the name of the route parameter you are using. Or if it was part of the query string and not part of your routes:new { curentCountry = Request["countryID"] }
You may take a look at the documentation which illustrates how you could subscribe to the
OnDataBinding
event which is raised when a request to fetch data is being made:So you could subscribe to the
OnDataBinding
event:@(Html.Telerik() .ComboBoxFor(m => m.UnitOfAdministration) .ClientEvents(e => e.OnDataBinding("onComboBoxDataBinding")) .BindTo(Model.ListUnitOfAdministration) .DataBinding(bind => bind.Ajax().Select("GetCityListByStr", "User") .Delay(1000) )
and which allows you to pass additional arguments to this request
<script type="text/javascript"> function onComboBoxDataBinding(e) { e.data = $.extend({ }, e.data, { curentCountry: "customValue"}); } </script>
这篇关于如何设置路径值在Telerik的组合框客户端的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!