如何设置路径值在Telerik的组合框客户端 [英] How can i set route value in client side for Telerik combobox

查看:159
本文介绍了如何设置路径值在Telerik的组合框客户端的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个组合框。我需要得到第一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);
        如果(联合国!= N​​ULL)
        {
            串的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆