首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用combobox重新绑定网格,如何获取选定值?

用combobox重新绑定网格,如何获取选定值?
EN

Stack Overflow用户
提问于 2013-09-11 22:09:47
回答 1查看 558关注 0票数 0

我使用的是Telerik-MVC,当我更改combobox的值时,我会尝试重新绑定网格。除了我不能得到我的组合框的选定值之外,一切看起来都正常。下面是我的代码:

网格:

代码语言:javascript
复制
@{Html.Telerik().Grid(Model)
        .Name("Grid")
        .Columns(columns =>
        {
            columns.Bound(o => o.Col1);
            columns.Bound(o => o.Col2);
            columns.Bound(o => o.Col3);
        })
        .DataBinding(dataBinding => dataBinding.Ajax()
             .Select("_MyAction", "MyController")
        )
        .ClientEvents(events => events.OnDataBinding("Grid_onDataBinding"))
}

组合框:

代码语言:javascript
复制
@(Html.Telerik().ComboBox()
        .Name("ComboBox")
        .HtmlAttributes(new { id = "ComboBoxCode" })
        .BindTo(new SelectList(Model.GroupBy(x => x.Code)
                              .Select(o => o.First()).ToList(), 
                              "Code", "Code"))
        .ClientEvents(events => events
                .OnChange("onComboBoxChange")
        )
)

脚本:

代码语言:javascript
复制
function onComboBoxChange(e) {
    $("#Grid").data("tGrid").rebind();
}
function Grid_onDataBinding(e) {
    var code = /* I need to get the combobox value here */;
    e.data = { myCode: code };
}

控制器:

代码语言:javascript
复制
    [GridAction]
    public ActionResult _MyAction(string myCode)
    {
        Console.WriteLine("Code : " + code);
        /*
            Set new model here
        */
        return View(new GridModel(newModel));
    }

我试过这样的东西:

代码语言:javascript
复制
var e = document.getElementById("ComboBoxCode");
var code = e.options[e.selectedIndex].text;

但它不起作用。你能告诉我如何解决这个问题并获得正确的值吗?

EN

回答 1

Stack Overflow用户

发布于 2013-09-17 06:35:30

问题是,当您重新绑定网格时,实际上并没有使用ComboBox selected值。您的onComboBoxChange函数通过转到_MyAction方法告诉网格重新绑定。您在任何时候都没有传入ComboBox值。您应该做的是在绑定数据之前,获取选定的值并将其传递给您的控制器操作。详情请参见http://www.telerik.com/help/aspnet-mvc/telerik-ui-components-grid-client-api-and-events.html#OnDataBinding。如下所示:

代码语言:javascript
复制
function Grid_onDataBinding(e) {
    var combobox = $('#ComboBox').data('tComboBox');
    e.data = { code: combobox.value };
}

(请注意,我实际上没有对ComboBox做过任何工作,所以这并没有经过测试,但这至少应该会让您走上正确的道路。参见ComboBox documentation。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18743522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档