在显示单元格值之前修改它
本文关键字:修改 显示 单元格 | 更新日期: 2023-09-27 18:10:45
我有一个绑定到SqlDataSource的RadGrid。所有项目始终处于编辑模式。
protected void RadGPozycje_PreRender(object sender, EventArgs e)
{
for (int i = 0; i < RadGPozycje.PageSize; i++)
{
RadGPozycje.EditIndexes.Add(i);
}
RadGPozycje.Rebind();
}
当绑定时,我的单元格"Vat"应该在数据库值等于-1时将值更改为"zw"。我试着这样做:
private void RadGPozycje_ItemDataBound(object sender, GridItemEventArgs e)
{
GridDataItem item;
item = e.Item as GridDataItem;
if (item["Vat"].Text == "-1")
item["Vat"].Text = "zw";
}
不起作用。我怎么做才能让它工作呢?
我设法使它在grid preender而不是itemdatabound中工作。
protected void RadGrid1_PreRender(object sender, EventArgs e)
{
foreach (GridDataItem it in RadGrid1.EditItems)
{
TextBox sv = (TextBox)it["POZ_Stawka_VAT"].Controls[0];
if (sv.Text=="-1")
sv.Text = "zw";
}
}
protected void RadGrid1_DataBinding(object sender, EventArgs e)
{
for (int i = 0; i < RadGrid1.PageSize; i++)
{
RadGrid1.EditIndexes.Add(i);
}
}
在preender和rebinding中设置editindex不是一个好的做法。当你这样做的时候,你抹去了你在任何其他点所做的所有更改,因为生命周期是:init, load, control events, preender。如果您总是在编辑模式下对所有行工作,那么最好听RadGrid。数据绑定,设置编辑索引,然后当其绑定时,UI将更新,而不需要任何额外的工作或额外的绑定。
protected void grid_databinding(..) {
for (int i = 0; i < RadGPozycje.PageSize; i++)
{
RadGPozycje.EditIndexes.Add(i);
}
}