Изменить значение ячейки до ее отображения - PullRequest
0 голосов
/ 06 октября 2011

У меня есть RadGrid, связанный с SqlDataSource.Все элементы всегда находятся в режиме редактирования.

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

Когда привязано, моя ячейка "Vat" должна изменить значение на "zw", когда значение из базы данных равно -1.Я пытался сделать это так:

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 ]

3 голосов
/ 11 октября 2011

Мне удалось заставить его работать при предварительном отображении сетки вместо 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 голос
/ 06 октября 2011

Не рекомендуется устанавливать индексы редактирования в prerender и reinding. Когда вы делаете это, вы стираете все изменения, которые вы сделали в любой другой точке, потому что жизненный цикл: инициализация, загрузка, управление событиями, предварительная визуализация. Если вы всегда работаете в режиме редактирования для всех строк, было бы лучше прослушать RadGrid.DataBinding, установить индексы редактирования, а затем, когда он будет ограничен, пользовательский интерфейс будет обновляться без дополнительной работы или дополнительных привязок.

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