我正在使用JQGrid插件创建一个带有表的MVC项目。我想使用DropDownList来允许用户指定一个值,该值将在SQL查询中用于从表中检索特定数据。即用户可以从列表中选择一个国家/地区,该表格将仅显示该国家/地区的项目。
我的问题是,在我的控制器类中,我无法弄清楚如何从我的表的数据绑定函数中的DropDownList中检索所选项目。
视图中的DropDownList
<%= Html.DropDownList("Countries")%>
在我的控制器中设置DropdownList
//dt is a DataTable which holds the values for my list
List<SelectListItem> countries = new List<SelectListItem>();
for (int i = 0; i < dt.Rows.Count; i++)
countries.Add(new SelectListItem { Text = dt.Rows[i][0].ToString(), Value = "" + i });
JsonResult DataBind()方法,我想访问所选的值
public JsonResult Charges_DataRequested()
{
string country = "Dropdownbox Selected Text";
}
问题似乎是在JsonResult函数中我无法访问ViewData或我的ViewModel,当我尝试访问它们时,它总是似乎为null。我对MVC和Web开发都很陌生,任何建议都会非常受欢迎。
答案 0 :(得分:1)
感谢您的回答,它让我走上正轨。我意识到网格也有一个 postdata 参数。我能够为我的下拉列表创建一个javascript回发函数,并调用jqGrid'setGridParam'函数将我的下拉列表文本添加到网格postdata。我还可以触发网格重新加载,并在我的控制器Jsonresult函数中获取字符串。
Javascript
$('#Countries').change(function() {
var value = $("#Countries option:selected").text();
$("#ChargesGrid").setGridParam ({
postData:{
selectedCountry:$("#Countries option:selected").text()}
});
$("#ChargesGrid").trigger("reloadGrid");
alert(value);
});
控制器
public JsonResult Charges_DataRequested(string selectedCountry)
{
string country = selectedCountry;
}
答案 1 :(得分:0)
jqGrid有一个 userdata 属性,您可以在其中存储此数据,以便在发布时可用。这可能意味着您必须更新此下拉列表更改。
jQuery("#GridId").getGridParam('userData').SelectedText
我只是用另一个来设置加载数据,但认为它可以为你做另一种方式。在将网格json创建为
时,我会在控制器操作中设置上面的SelectedTextuserdata = new { SelectedText = "SomeValue" }
唯一的麻烦是它是jqGrid代码中的私有集等效。