gpt4 book ai didi

javascript - Kendo MVC Treeview 获取所有选中的节点并将它们传递给 Controller

转载 作者:行者123 更新时间:2023-12-03 22:52:15 24 4
gpt4 key购买 nike

第一次使用 MVC5 和 Telerik...我正在阅读 Active Directory 并将所有安全组显示在 TreeView 中。管理员完成选择 Angular 色后,他/她应按下“保存组”按钮,然后 javascript 应该获取所有节点并将它们传递给 Controller ​​。 Controller 将保存到数据库。我需要知道如何访问给定节点的数据上下文。获取数据上下文后,我可以继续获取所有节点上下文并将其传递给 Controller ​​。

Kendo Treeview 和按钮:

@{
ViewBag.Title = "Configure";
}
@model IEnumerable<CMDB.Web.Models.AdminGroups>

<div>
<input id="save" type="button" value="Save Groups" onclick="SaveData()" />
<input id="return" type="button" value="Return" onclick="location.href='@Url.Action("Index", "Admin")'" />

@(Html.Kendo().TreeView()
.Name("treeview")
.Checkboxes(checkboxes => checkboxes
.Name("checkedFiles")
.CheckChildren(true)
)
.Events(events => events.Check("onCheck"))
.DataTextField("Name")
.AutoScroll(true)
.DataSource(source => source
.Model(model => model.Id("id").HasChildren("hasChildren"))
.Read(read => read.Action("GetActiveDircetoryGroups", "Configure"))
)
)
</div>

Javascript:
<script type="text/javascript" >
//show checked node IDs on datasource change
function onCheck() {
var treeView = $("#treeview").data("kendoTreeView");
var id = treeView.dataItem(e.node);
}

function SaveData() {

var AllSelectedNodes = new Array();
AllSelectedNodes = ($("#treeview .k-item input[type=checkbox]:checked").closest(".k-item"));
alert(AllSelectedNodes.join('\n'));
var myApiUrl = '@Url.HttpRouteUrl("DefaultAPI", new { controller = "AdminValues", action = "SaveSelectedAdmins"})';
var movies = $.ajax({
url: myApiUrl,
type: 'POST',
data: AllSelectedNodes
});
}

</script>

Controller :
[HttpPost]
public void SaveSelectedAdmins(IEnumerable<CMDB.Web.Models.AdminGroups> ag)
{
string Sids = string.Empty;
foreach (var s in ag)
{
var pc = new PrincipalContext(ContextType.Domain, "", "");//blank for security purposes
GroupPrincipal gp = GroupPrincipal.FindByIdentity(pc, IdentityType.Guid, s.id.Value.ToString());
if (s.id.Value.ToString() == gp.Guid.Value.ToString())
{
Sids = Sids + "," + gp.Sid;
}
}
using (var ctx = new Data.DBContext())
{
var d2 = (from d in ctx.Set<Entities.Config>()
where d.Property == "str"
select d).SingleOrDefault();
d2.Value = Sids;
ctx.SaveChanges();
}
}

最佳答案

使用 $.post 而不是 $.ajax 解决了这个问题。

关于javascript - Kendo MVC Treeview 获取所有选中的节点并将它们传递给 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35756196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com