Also ich hab da mal ein kleines Sample gebastelt, dass aufzeigen soll, wie das in etwa funktioniert.
MarkUp:
<asp:GridView ID="GridView1" runat="server" AutoGenerateEditButton="true" OnRowEditing="GridView1_RowEditing">
</asp:GridView>
Und hier noch das CodeBehind:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable source = GenerateDataSource();
GridView1.DataSource = source;
GridView1.DataBind();
}
}
// irrelevant, nur ein kleiner Helper
private static DataTable GenerateDataSource()
{
Random rnd = new Random();
DataTable ret = new DataTable();
ret.Columns.Add(new DataColumn("Col1"));
ret.Columns.Add(new DataColumn("Col2"));
for (int i = 0; i < 10; i++)
ret.Rows.Add(rnd.Next(), rnd.Next());
return ret;
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
DataTable source = GenerateDataSource();
GridView1.DataSource = source;
GridView1.DataBind();
}
}
Wichtig ist halt eben, dass das !IsPostBack um das Binding im Page_Load, sowie dass die Daten neu gebunden werden, wenn das RowEditing geklickt wird.
Wenn du die neuen DataSource-Controls verwendest, würde das ganze etwas einfacher werden, da das GridView mit diesen viel besser interagiert.