2014-04-23 3 views
0

그리드 그룹화 컨트롤에서 데이터를 데이터베이스로 저장하려고합니다. 이것은 저장 버튼 클릭 이벤트에서 작성한 코드입니다. 처음 asp.net을 사용하여 syncfusion에서 그리드 그룹화 컨트롤의 행 상태를 확인하는 방법

foreach (TableRow row in GridGroupingControl1.TopLevelTable.Rows) 
{ 
    if (row is GridRow) 
    { 
     GridRow gridRow = row as GridRow; 

     if (gridRow.Record != null) 
     { 
      cmd = new SqlCommand("Insert into Employee(Name, Dept, Desg) values('" + gridRow.Record.GetValue("(Name") + "','" + gridRow.Record.GetValue("Dept") + "','" + gridRow.Record.GetValue("Desg") + "')", con); 

      cmd.ExecuteNonQuery(); 
     } 
    } 
} 

나는 그리드에서 2 개 행을 추가 database.Next 시간에 2 개 행이 다시 나는 처음 2 행과 마지막으로 삽입 된 행을 저장 그리드에 그 시간이 더 행을 추가하는 것을 시도하고 있음을 저장 . 그래서 내가 새로 추가 한 마지막 2 행이 데이터베이스에 저장되도록 행 상태를 어떻게 찾을 수 있습니까?

답변

0

새로 추가 된 레코드로 데이터베이스를 업데이트하려면 GridDataSourceControlRowAddingEventHandler에서 추가 된 레코드를 ViewState에 저장 한 다음 저장 버튼 클릭 이벤트에서 ViewState의 레코드를 데이터베이스에 삽입 할 수 있습니다.

protected void Page_Load(object sender, EventArgs e) 
    { 
     ... 
     this.GridGroupingControl1.DataSourceControlRowAdding += new GridDataSourceControlRowAddingEventHandler(GridGroupingControl1_DataSourceControlRowAdding); 
    } 

void GridGroupingControl1_DataSourceControlRowAdding(object sender, GridDataSourceControlRowAddingEventArgs e) 
    { 
     List<Orders> records = new List<Orders>(); 
     if(ViewState["AddedRecord"] != null) 
     { 
      records = (List<Orders>)ViewState["AddedRecord"]; 
     } 
     Orders obj = new Orders(); 
     obj.LastName = e.NewValues[0].ToString(); 
     obj.FirstName = e.NewValues[1].ToString(); 
     records.Add(obj); 
     ViewState["AddedRecord"] = records; 
     e.Cancel = true; 
     e.Handled = true; 
    } 
private void SaveChanges() 
    { 
     if (ViewState["AddedRecord"] != null) 
    { 

     myConnection = new SqlCeConnection(ConnectionString); 
     myConnection.Open(); 
     List<Orders> records1 = new List<Orders>(); 
     records1 = (List<Orders>)ViewState["AddedRecord"]; 
     foreach (var temp in records1) 
     { 
      SqlCeCommand command1 = new SqlCeCommand(); 
      command1.Connection = myConnection; 
      command1.CommandText="INSERT INTO Employees([Last Name], [First Name]) VALUES(@LastName,@FirstName)"; 

      command1.Parameters.AddWithValue("@LastName", temp.LastName); 
      command1.Parameters.AddWithValue("@FirstName", temp.FirstName); 

      command1.ExecuteNonQuery(); 
     } 
     ViewState["AddedRecord"] = null; 
     myConnection.Close(); 
    } 
    }