我尝试使用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。
答案 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);
}