Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何刷新剑道ui网格自定义按钮可见性?_Javascript_Jquery_Kendo Ui_.net Core_Kendo Grid - Fatal编程技术网

Javascript 如何刷新剑道ui网格自定义按钮可见性?

Javascript 如何刷新剑道ui网格自定义按钮可见性?,javascript,jquery,kendo-ui,.net-core,kendo-grid,Javascript,Jquery,Kendo Ui,.net Core,Kendo Grid,我在剑道ui网格上有多个自定义命令,每个命令都应该按顺序显示。单击第一个按钮时,项目将更新,然后应显示下一个按钮。单击按钮时,数据源将更新,但按钮的可见性状态不会更改。我能改变按钮的唯一方法是刷新整个页面 以下是我目前拥有的: cshtml @(Html.Kendo().Grid<Visitors>().Name("shippingGrid") .Sortable() .Groupable() .Editable(e => e.Mode(Gr

我在剑道ui网格上有多个自定义命令,每个命令都应该按顺序显示。单击第一个按钮时,项目将更新,然后应显示下一个按钮。单击按钮时,数据源将更新,但按钮的可见性状态不会更改。我能改变按钮的唯一方法是刷新整个页面

以下是我目前拥有的: cshtml

@(Html.Kendo().Grid<Visitors>().Name("shippingGrid")
      .Sortable()
      .Groupable()
      .Editable(e => e.Mode(GridEditMode.InCell))
      .Scrollable(sc => sc.Endless(true))
      .Pageable(p => p.AlwaysVisible(true))
      .Resizable(r => r.Columns(true))
      .Filterable()
      .ClientDetailTemplateId("entryDetails")
      .Columns(columns =>
      {
          columns.Bound(column => column.VisitorId).Width(50);
          columns.Bound(column => column.VisitorType.Description).Editable("editMode").Width(150);
          columns.Bound(column => column.FirstName).Width(200).Editable("editMode");
          columns.Bound(column => column.LastName).Width(200).Editable("editMode");
          columns.Bound(column => column.Notes).Width(200);


          columns.Command(column =>
          {
              column.Custom("Check In").Click("btnAction_Click").Visible("btnCheckIn_Visible").HtmlAttributes(new { actionId = 3});
              column.Custom("Check Out").Click("btnAction_Click").Visible("btnCheckOut_Visible").HtmlAttributes(new { actionId = 4 });

              column.Custom("Start Loading").Click("btnAction_Click").Visible("btnStartLoadingOrUnloading_Visible").HtmlAttributes(new { actionId = 5});
              column.Custom("Finish Loading").Click("btnAction_Click").Visible("btnFinishLoading_Visible").HtmlAttributes(new { actionId = 6 });

              column.Custom("Start Unloading").Click("btnAction_Click").Visible("btnStartLoadingOrUnloading_Visible").HtmlAttributes(new { actionId = 7 });
              column.Custom("Finish Unloading").Click("btnAction_Click").Visible("btnFinishUnloading_Visible").HtmlAttributes(new { actionId = 8 });
          }).Width(100).MinResizableWidth(100);
      })
      .DataSource(ds => ds.Ajax()
          .Read(r => r.Url("ShippingOffice?handler=Read").Data("forgeryToken"))
          .Model(m => m.Id(id => id.VisitorId)
          )
      )
      .Pageable())

<script type="text/javascript">
var timeEntriesList = @Html.Raw(JsonConvert.SerializeObject(ViewBag.visitorTimeEntries));

function btnCheckIn_Visible(dataItem) {
    if (timeEntriesList.length > 0) {
        var lastTimeEntryIndex = timeEntriesList.length - 1 - timeEntriesList.slice().reverse().findIndex(t => t.VisitorId === dataItem.VisitorId);
        if (timeEntriesList[lastTimeEntryIndex].EntryTypeId === 1) {
            return true;
        }
        return false;
    }
    return false;
}

function btnCheckOut_Visible(dataItem) {
    if (timeEntriesList.length > 0) {
        var lastTimeEntryIndex = timeEntriesList.length - 1 - timeEntriesList.slice().reverse().findIndex(t => t.VisitorId === dataItem.VisitorId);
        if (timeEntriesList[lastTimeEntryIndex].EntryTypeId === 6 || timeEntriesList[lastTimeEntryIndex].EntryTypeId === 8) {
            return true;
        }
        return false;
    }
    return false;
}

function btnStartLoadingOrUnloading_Visible(dataItem) {
    if (timeEntriesList.length > 0) {
        var lastTimeEntryIndex = timeEntriesList.length - 1 - timeEntriesList.slice().reverse().findIndex(t => t.VisitorId === dataItem.VisitorId);
        if (timeEntriesList[lastTimeEntryIndex].EntryTypeId === 3) {
            return true;
        }
        return false;
    }
    return false;
}

function btnFinishLoading_Visible(dataItem) {
    if (timeEntriesList.length > 0) {
        var lastTimeEntryIndex = timeEntriesList.length - 1 - timeEntriesList.slice().reverse().findIndex(t => t.VisitorId === dataItem.VisitorId);
        if (timeEntriesList[lastTimeEntryIndex].EntryTypeId === 5) {
            return true;
        }
        return false;
    }
    return false;
}

function btnFinishUnloading_Visible(dataItem) {
    if (timeEntriesList.length > 0) {
        var lastTimeEntryIndex = timeEntriesList.length - 1 - timeEntriesList.slice().reverse().findIndex(t => t.VisitorId === dataItem.VisitorId);
        if (timeEntriesList[lastTimeEntryIndex].EntryTypeId === 7) {
            return true;
        }
        return false;
    }
    return false;
}

我已尝试添加shippingGrid.refresh()但这也不起作用。是否有一种方法可以在网格刷新后更改按钮的可见性状态,而不必刷新整个页面?

我能够找到答案。加载页面后,ViewBag不会更新,并意识到我在发布后没有返回任何内容

以下是我所改变的:

        success: function (result) {
        timeEntriesList.push(result);
        shippingGridDataSource.sync();
        shippingGridDataSource.read();
    }

在将其添加到TimeEntries列表后,按钮的可见性将发生变化。

我能够找到它。加载页面后,ViewBag不会更新,并意识到我在发布后没有返回任何内容

以下是我所改变的:

        success: function (result) {
        timeEntriesList.push(result);
        shippingGridDataSource.sync();
        shippingGridDataSource.read();
    }

将其添加到TimeEntries列表后,按钮的可见性将发生变化。

如果我很强,请纠正我的错误,但上面的代码没有显示更改按钮可见性的CSS。我不确定
。单击按钮时将调用Visible(btnCheckIn\u Visible)
。您可以调试javascript以查看,但我只需更改方法并在Ajax成功函数
$('.selector')中设置按钮可见性。show()
或使用来确定可见性。如果我很强,请更正我,但上面的代码没有显示更改按钮可见性的CSS。我不确定
.Visible(btnCheckIn_Visible)
将在单击按钮时被调用。您可以调试javascript以查看,但我只需更改方法并在Ajax成功函数
$('.selector').show()中设置按钮可见性
或使用来确定可见性。这将刷新所有数据,即对服务器的http请求。我想更新更改为单行时按钮的可见性。这将刷新所有数据,即对服务器的http请求。我想更新更改为单行时按钮的可见性。