2012-04-19 56 views
0

我搜索了所有,似乎無法找到答案。MVC3 WebGrid行選擇複選框

我有一個WebGrid上的MVC3項目。第一列是一個Select,它當前使用普通的item.GetSelectLink來創建一個鏈接來選擇該行。

我想這是一個複選框,而不是測試「選擇」。當用戶點擊複選框時,我希望選中網格中的那一行,並選中該框。

我想選中和未選中狀態爲我提供的圖像。

我該怎麼做?

回答

0

除非您使用Ajax進行某些操作,否則「select」鏈接將刷新頁面並將「Selected = index」添加到查詢字符串中。這將是一種不尋常的體驗,因爲人們不習慣觸發頁面重新加載的複選框。

你可以這樣做,這完全模仿了「選擇」鏈接功能。首先複選框添加到該行:

grid.Column(
    format: (item) => @Html.Raw("<input class='select' type='checkbox'" + ((grid.SelectedRow == item) ? "checked" : "") + " />") 
) 

然後添加一些JavaScript來處理複選框點擊:

var index = 1; 
$("input.select").each(function() { 
    $(this).data('row', index); 
    $(this).click(function() { window.location = "?Selected=" + $(this).data('row'); }); 
    index++; 
}); 
+0

謝謝你的回覆,偉大的代碼。 – user856232 2012-04-20 02:32:24

+0

Ooops,點擊回車並保存。意思是寫更多....感謝你的代碼,但我實際上需要它來做頁面刷新。它甚至不必真的是一個複選框。它可能是一個按鈕。我有一個特殊的圖形,看起來有點像我打算使用的複選框。你是否有一些代碼可以讓我在那裏放置一個2狀態按鈕......一個狀態用於選擇行時的狀態,另一個狀態用於不當的狀態,當你點擊它時,用SelectedRow = X查詢字符串? – user856232 2012-04-20 02:34:02

+0

@ user856232是的,我認爲你也可以使用上述。只需將type ='checkbox'替換爲type ='image',然後設置'src'就像上面設置的'checked'一樣(取決於gridlSelectedRow == item)。 – McGarnagle 2012-04-20 07:00:55