Ciao (di nuovo!).
A me funziona, nel modo seguente.
Prima di tutto, a livello di Html, se voglio modificare il campo, uso un oggetto adatto, ad esempio una text box:
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Colonna1") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txt1" runat="server" Text='<%# Eval("Colonna1") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
A livello di code behind, devo riassociare l'indice della riga con la mia source.
Per farlo, però, devo avere a disposizone la source che alimenta la gridview.
Quindi, nel Page_load, devo memorizzarmi la source, ad esempio in un viewstate:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();
DataColumn dc = new DataColumn("xx", typeof(bool));
DataColumn dc2 = new DataColumn("yy", typeof(bool));
dt.Columns.Add(dc);
dt.Columns.Add(dc2);
dt.Rows.Add(true, true);
GridView1.DataSource = dt;
GridView1.DataBind();
ViewState["mieiDati"] = dt;
}
Nel mio rowCommand ora cerco l'indice e poi lo riassocio ai dati:
prova e fammi sapere.
Buona giornata,
Paolo