radgridview.TableElement.Update不起作用

时间:2015-12-18 02:55:14

标签: c# winforms telerik

我尝试使用contextMenu上的事件更新我的gridview。 但它不起作用..

这是我的代码:

RowFormatting

    void dgItemList_RowFormatting(object sender, RowFormattingEventArgs e)
    {
        ItemModel rowModel = e.RowElement.RowInfo.DataBoundItem as ItemModel;
        if (rowModel.Status == 2)
        {
           e.RowElement.ForeColor = Color.Red;
        }
    }

ClickEvent

void Deactivate_Click(object sender, EventArgs e)
    {

        GridViewRowInfo row = dgItemList.CurrentRow;
        ItemModel rowModel =  row.DataBoundItem as ItemModel;

        if(UiHelpers.ShowConfirmForm("Do you want to Deactivate this Item?"))
        {
            ServiceResult result = _svc.UpdateItemStatus(rowModel.ItemID);
            if(result.Successful)
            {
                UiHelpers.ShowSuccessForm(rowModel.Description + " was successfully deactivated!");
                dgItemList.TableElement.Update(GridUINotifyAction.StateChanged);
            }

        }
    }

我使用.TableElement.Update()来运行rowFormatting ..但它不起作用...函数UpdateItemStatus只是将项目的状态更改为{{ 1}}。我真的很新,所以请耐心等待。

我正在使用C#和Telerik。

1 个答案:

答案 0 :(得分:1)

除了确定状态已设置外,我还建议您使用

row.InvalidateRow()

方法,它只会使一行无效,而TableElement.Update更新更重。

此外,在RowFormatting处理程序中,您还必须重置引入的外观修改,因为网格使用虚拟化,并且在滚动,过滤等操作期间重用元素:

    void radGridView1_RowFormatting(object sender, RowFormattingEventArgs e)
    {
        if (e.RowElement.RowInfo.Cells[0].Value.ToString().Contains("3"))
        {
            e.RowElement.DrawFill = true;
            e.RowElement.BackColor = Color.Yellow;
            e.RowElement.GradientStyle = GradientStyles.Solid;
        }
        else
        {
            e.RowElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local);
            e.RowElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local);
            e.RowElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local);
        }

有关行格式的更多信息,请访问:link。在这里,您可以阅读有关UI虚拟化的信息:link