Старые значения 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;
}