2011-03-03 36 views
1

我正在使用JQGrid插件創建一個帶有表格的MVC項目。我想使用DropDownList來允許用戶指定一個值,該值將在SQL查詢中用於從表中檢索特定數據。即用戶可以從列表中選擇一個國家,該表格將僅顯示來自該國家的項目。在JsonResult函數中檢索選定的項目文本

我的問題是,我無法弄清楚如何從我的控制器類中的我的表的數據綁定函數中從DropDownList中檢索所選項目。

的DropDownList在查看

<%= Html.DropDownList("Countries")%> 

在我的控制器設置的下拉列表

//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函數中,我無法訪問Vie wData或我的ViewModel,當我嘗試訪問它們時,它總是顯示爲空。我對MVC和Web開發很陌生,任何建議都非常受歡迎。

+0

視圖模型不被束縛,因爲提交沒有發生。如果你想這樣做,你必須自己解析頁面字段,並將結果數據傳遞給'Charges_DataRequested()'。 – 2011-03-03 15:38:41

+0

我正在使用JQGrid插件,每當網格綁定數據時我都會調用此方法(我假設它們的腳本中有某處)。我無法訪問它,所以我無法將自己的值傳遞給Charges_DataRequested()函數。 – Joe 2011-03-03 15:55:50

+0

所以你需要訪問網格外的數據?我認爲你需要爲此做一整頁的文章。 – 2011-03-03 16:00:55

回答

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; 
    } 
0

jqGrid已得到userdata屬性,您可以存儲此數據,以便它可以在後。這可能意味着你必須更新這個下拉式變化。

jQuery("#GridId").getGridParam('userData').SelectedText 

我只使用這個另一個設置加載數據,但認爲它可以用其他方式爲你工作。創建網格JSON當作爲

userdata = new { SelectedText = "SomeValue" } 

唯一的麻煩是,如果它是一個私人組等價的jqGrid的代碼中,我會在一個控制器動作設定上述SelectedText。

+0

評論已移除 - 添加了答案而不是 – Joe 2011-03-04 09:55:09

+0

@Joe樂於提供幫助,猜測您的答案更適合備案。 – dove 2011-03-04 11:25:01