2011-03-22 8 views
0

저는 Windows Forms에 익숙하지 않고 여러 텍스트 필드가있는 양식을 가져 와서 데이터베이스를 업데이트하는 데 어려움이 있습니다.C# 데이터베이스가 데이터 바인딩에서 업데이트되지 않습니다.

데이터 집합을 채우고 각 필드에 데이터 바인딩을 추가하고 데이터베이스를 업데이트하는 각 필드에 leave 이벤트를 추가합니다.

clientsTableAdapter.FillByID(dataSetClients.Clients, tempID); 

txtForename.DataBindings.Add("Text", dataSetClients.Clients, "Forename"); 
txtForename.Leave += new EventHandler(updateDataSet); 

private void updateDataSet(object sender, EventArgs e) 
{ 
    this.clientsTableAdapter.Update(this.dataSetClients.Clients); 
} 
데이터베이스는 업데이트하지 않습니다

, 나는 여러 가지 방법으로 내가 수동으로 데이터 집합을 업데이트과 같이, 어댑터에서) (.update를 실행하는 경우입니다 작동하는 것 같다 유일한 방법이 시도했다;

주제에 대한 도움이나 안내를 크게 듣습니다.

답변

2

DataBindings의 default DataSourceUpdateMode은 OnValidation입니다. 유효성 검사 이벤트는 after the Leave event까지 호출되지 않으므로 값은 업데이트되지 않습니다.

데이터 바인딩에 대해 DataSourceUpdateMode.OnPropertyChanged을 지정해야합니다.

+0

도움이되었지만 문제가 해결되지 않았습니다. 데이터 바인딩이 문제가되지 않습니다. 함수가 작동하지 않을 때입니다. – baked

+0

@baked Leave에서 Update()를 실행하면 데이터 세트가 새 값으로 업데이트 되었습니까? – stuartd

+0

@Stuart 예, (새로 업데이트 된) – baked

0

이 문제가 계속되는 지 확실하지 않으면, 저를 도운 일에 기여하고 싶습니다. DataSet, Databinding 및 DataSet에서 변경되었지만 데이터베이스에서는 변경되지 않은 Data와 동일한 문제가있었습니다. 나는이 모든 팁을 시도했지만 아무것도 도움이되지 않았다. 저를 도와

DataSet.Data.Tables[0].Rows[0].EndEdit(); //0 for your Index/Tablename 

는, 그래서 데이터 집합에 대한 데이터를 결합 할 수 내가 데이터를 업데이트하고 싶어 할 때 다음, 나는 현재 데이터 집합의 모든 테이블에 "지며 EndEdit()"를 설정합니다.

나는이를 tryed : 어떤 변경을하지, 나는 또한 .GetChanges을 tryed()와 .HasChanges()하지만 .EndEdit은() 내 코드에서 누락 한 가지였다
foreach (Control bla in DisplayDict[SubTyp.ToString()].DataControlHelper.Values) 
{ 
    bla.BindingContext[DisplayDict[SubTyp.ToString()].DBData.Data].EndCurrentEdit(); 
} 

.

이 정보가 도움이되기를 바랍니다.

P. 내 나쁜 영어로 죄송합니다. 지난 번 사용 해본 이후로 한동안되었습니다. (

관련 문제