mi sa che mi sono fatto forviare dalla tua domanda, allora fai un test:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
private System.Data.DataSet dataSet;
private void MakeParentTable()
{
// Create a new DataTable.
System.Data.DataTable table = new DataTable("ParentTable");
// Declare variables for DataColumn and DataRow objects.
DataColumn column;
DataRow row;
// Create new DataColumn, set DataType,
// ColumnName and add to DataTable.
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "id";
column.ReadOnly = true;
column.Unique = true;
// Add the Column to the DataColumnCollection.
table.Columns.Add(column);
// Create second column.
column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "ParentItem";
column.AutoIncrement = false;
column.Caption = "ParentItem";
column.ReadOnly = false;
column.Unique = false;
// Add the column to the table.
table.Columns.Add(column);
// Make the ID column the primary key column.
DataColumn[] PrimaryKeyColumns = new DataColumn[1];
PrimaryKeyColumns[0] = table.Columns["id"];
table.PrimaryKey = PrimaryKeyColumns;
// Instantiate the DataSet variable.
dataSet = new DataSet();
// Add the new DataTable to the DataSet.
dataSet.Tables.Add(table);
// Create three new DataRow objects and add
// them to the DataTable
for (int i = 0; i <= 2; i++)
{
row = table.NewRow();
row["id"] = i;
row["ParentItem"] = "ParentItem " + i;
table.Rows.Add(row);
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// Run all of the functions.
MakeParentTable();
GridView1.DataSource = dataSet.Tables["ParentTable"];
GridView1.DataBind();
}
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
MakeParentTable();
GridView1.DataSource = dataSet.Tables["ParentTable"];
GridView1.EditIndex = e.NewEditIndex;
GridView1.DataBind();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False" DataKeyNames="id" OnRowEditing="GridView1_RowEditing">
<Columns>
<asp:CommandField ShowEditButton="true" />
<asp:BoundField DataField="id" />
<asp:BoundField DataField="ParentItem" />
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
e prova a controllare il comportameno applicando o meno il ViewState, o gestendo o meno l'evento.
nel mio esempio, senza il scrivere codice nel RowEditing e disabilitando il ViewState "sparisce tutto"
ciao marco
Modificato da nostromo il 04 luglio 2008 17.11 -