Старые значения SqlDatasource для динамических gridview-шаблонов

Для динамического Gridview я генерирую столбцы во время выполнения, как это:

TemplateField tf = new TemplateField();
tf.HeaderText = colName;
tf.ItemTemplate = new GenericItem(ListItemType.Item, colName, "Command");
tf.EditItemTemplate = new GenericItem(ListItemType.EditItem, 
Gridview1.Columns.Add(tf);

GenericItem реализует IBindableTemplate:

public class GenericItem : IBindableTemplate

Это работает нормально, но когда я пытаюсь обновить некоторые столбцы, мне нужно иметь доступ к старым значениям. Я предположил, что мог бы просто использовать это:

<asp:SqlDataSource runat="server" ID="dsGridview" OldValuesParameterFormatString="old_{0}" ConflictDetection="CompareAllValues" />

Но когда я хочу получить доступ к свойству oldvalues ​​моего источника данных в событии RowUpdating Gridview, я заметил, что коллекция oldvalues ​​пуста (коллекция newvalues ​​заполнена просто отлично)

Кто-нибудь знает, как я могу получить эти старые значения?

С наилучшими пожеланиями, r3try

1 ответ

Решение

Хорошо, это не то, как я хотел это решить - но так как нет других предложений, вот как я решил свою проблему. Может быть, у кого-то есть такая же проблема:

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        //GET THE OLD VALUES
        myOldValues.Clear();
        GridView gv = (GridView)sender;
        gv.EditIndex = e.NewEditIndex;
        gv.DataBind();

        //populate 
        for (int i = 0; i < Gridview1.Columns.Count; i++)
        {
            DataControlFieldCell cell = gv.Rows[e.NewEditIndex].Cells[i] as DataControlFieldCell;
            gv.Columns[i].ExtractValuesFromCell(myOldValues, cell, DataControlRowState.Edit, true);
        }

        Session["MyOldValues"] = myOldValues;

    }
Другие вопросы по тегам