在显示单元格值之前修改它

本文关键字:修改 显示 单元格 | 更新日期: 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);
        }
}