Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用组合框重新绑定网格,如何获取选定值?_C#_Combobox_Telerik_Telerik Grid_Telerik Mvc - Fatal编程技术网

C# 使用组合框重新绑定网格,如何获取选定值?

C# 使用组合框重新绑定网格,如何获取选定值?,c#,combobox,telerik,telerik-grid,telerik-mvc,C#,Combobox,Telerik,Telerik Grid,Telerik Mvc,我与Telerik MVC合作,当我更改组合框的值时,我尝试重新绑定网格。除了我无法获取组合框的选定值外,所有操作似乎都正常。 这是我的密码: 网格: @{Html.Telerik().Grid(Model) .Name("Grid") .Columns(columns => { columns.Bound(o => o.Col1); columns.Bound(o => o.Col

我与Telerik MVC合作,当我更改组合框的值时,我尝试重新绑定网格。除了我无法获取组合框的选定值外,所有操作似乎都正常。 这是我的密码:

网格:

@{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"))
}
组合框:

@(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")
        )
)
脚本:

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 };
}
控制器:

    [GridAction]
    public ActionResult _MyAction(string myCode)
    {
        Console.WriteLine("Code : " + code);
        /*
            Set new model here
        */
        return View(new GridModel(newModel));
    }
我试过这样的方法:

var e = document.getElementById("ComboBoxCode");
var code = e.options[e.selectedIndex].text;

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

问题是,当你重新绑定网格时,你没有真正使用ComboBox选择的值。您的
onComboxChange
函数告诉网格重新绑定,它通过转到
\u MyAction
方法来执行此操作。在任何时候都没有传入组合框值。您应该做的是在数据绑定之前,获取所选值并将其传递给控制器操作。有关详细信息,请参阅。大概是这样的:

function Grid_onDataBinding(e) {
    var combobox = $('#ComboBox').data('tComboBox');
    e.data = { code: combobox.value };
}

(请注意,我实际上还没有对ComboBox做过任何工作,因此这没有经过测试,但这至少会让您走上正确的道路。请参阅。)

好的,谢谢您的帮助。除了我不知道如何从我的函数
Grid\u onDataBinding
中的combobox中获取所选值外,其他一切似乎都正常工作。我编辑我的问题以了解更多细节。在我的答案中添加了一个示例。