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

时间:2011-10-06 08:38:55

标签: c# asp.net telerik radgrid

我有一个绑定到SqlDataSource的RadGrid。所有项目始终处于编辑模式。

protected void RadGPozycje_PreRender(object sender, EventArgs e)
{
    for (int i = 0; i < RadGPozycje.PageSize; i++)
    {
        RadGPozycje.EditIndexes.Add(i);
    }
    RadGPozycje.Rebind();
}

绑定时,当数据库中的值等于-1时,我的单元格“Vat”应将值更改为“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";
}

它不起作用。我怎么能这样做才能起作用呢?

2 个答案:

答案 0 :(得分:3)

我试图让它在网格预渲染中工作而不是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);
        }

    }

答案 1 :(得分:1)

在预渲染和重新绑定中设置editindex不是一个好习惯。当你这样做时,你会消除你在任何其他点所做的所有更改,因为生命周期是:init,load,control events,prerender。如果您始终在所有行的编辑模式下工作,最好是监听RadGrid.DataBinding,设置编辑索引,然后在绑定时,UI将更新而无需任何额外的工作或其他绑定。

protected void grid_databinding(..) {
   for (int i = 0; i < RadGPozycje.PageSize; i++)
        {
            RadGPozycje.EditIndexes.Add(i);
        }
}
相关问题