1
我對JQgrid和mvc3很新。我有一個非常基本的具有編輯功能的jQgrid。MVC3 AD JQGrid基於角色的授權編輯鏈接
我想在jqGrid.navgrid中爲某些用戶(通過AD進行身份驗證)禁用編輯鏈接,當JqGrid加載併爲其他用戶角色不同時啓用它。
我能夠限制用戶編輯網格數據,但這還不夠。我希望用戶不要在JqGrid中看到那個可編輯鏈接。
這裏是其中的jqGrid我在我的視圖(index.cshtml):
jQuery(document).ready(function() {
jQuery('#list').jqGrid({
colNames: ['id', 'CountryCode','Node','EligFactor'],
colModel: [
{ name: 'id', index: 'id', width: 150, height: 100, align: 'left' },
{ name: 'CountryCode', index: 'CountryCode', width: 150, align: 'left' },
{name: 'Node', index: 'Node', width: 150, height: 100, align: 'left' },
{name: 'EligFactor', index: 'EligFactor', width: 150, height: 100, align: 'left', editable: true, edittype: 'text' }
],
url: '@Url.Action("DynamicGridData")',
datatype: 'json',
mtype: 'POST',
pager: jQuery('#pager'),
rowNum: 10,
rowList: [5, 10, 15, 20, 25],
sortname: 'Id',
sortorder: "asc",
viewrecords: true,
imgpath: '',
caption: 'Eligibility Factor Grid',
imgpath: '/Content/images',
height: '210px'
}).navGrid('#pager', { edit: true, add: false, del: false, search: false, refresh: true },
{ url: '@Url.Action("EditRecord")', closeAfterEdit: true },
{},
{});
});
2,這裏是在控制器中的編輯方法當用戶嘗試編輯該網格數據正在使用:
[Authorize([email protected]"MyDomain\SecurityLists\User1")]
public ActionResult EditRecord(int id, string eligFactor)
{
bool success = false;
var context = new EligibilityFactorDataContext();
EligibilityControl eg = context.EligibilityControls.Single(p => p.id == id);
eg.EligFactor = Convert.ToSingle(eligFactor);
try
{
context.SubmitChanges();
success = true;
return Json(success);
}
catch (Exception e)
{
success = false;
return Json(success);
}
}
可以有人pl。幫助我實現這一目標。非常感激 !
var context = new EligibilityFactorDataContext();
var isAuth = true;
int pageIndex = Convert.ToInt32(page) - 1;
int pageSize = rows;
int totalRecords = context.EligibilityControls.Count();
int totalPages = (int)Math.Ceiling((float)totalRecords/(float)pageSize);
var eligibilitycontrols = context.EligibilityControls.OrderBy(sidx + " " + sord).Skip(pageIndex * pageSize).Take(pageSize);
var jsonData = new
{
total = totalPages,
page = page,
records = totalRecords,
userdata = isAuth,
rows = (
from eligibilitycontrol in eligibilitycontrols
select new
{
id = eligibilitycontrol.id,
cell = new string[] {
eligibilitycontrol.id.ToString() ,
eligibilitycontrol.CountryCode,
eligibilitycontrol.Node.ToString(),
Convert.ToSingle(eligibilitycontrol.EligFactor).ToString()}
}).ToArray()
};
return Json(jsonData);
}
馬克,感謝您的評論。首先,我沒有這樣的Jqgrid()..我有一堆參數:價值在裏面..如果我像你所說的使用..許多鱈魚重複..似乎不是很好的方式來做到這一點..甚至我不知道如何從我的控制器傳遞該參數..我試圖在我的DynamicGridData mehtod這樣的事情: – ana
我在我的實際問題中添加DynamicGridData – ana
我不明白你是什麼意思,你沒有這樣的jQgrid()?我上面所做的只是定義了導航區域的構建,與您聲明網格的地方分開。你可以很容易地將上面的代碼簡化成一個帶有三元運算符的語句,但我想保持清晰。如果你不知道如何將bool傳遞給你的View,我猜你可以通過jQgrid數據中的Userdata傳遞它。 – Mark