对于动态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" />
但是当我想在Gridview的RowUpdating事件中访问我的数据源的oldvalues属性时,我注意到oldvalues集合是空的(newvalues集合被填充得很好)
有人知道我怎么能得到那些旧价值吗?
祝你好运, r3try
答案 0 :(得分:0)
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;
}