2011-06-14 2 views
0

WPF 프로그램에 로컬 Microsoft SQL Server Compact 3.5 데이터베이스 (.sdf)가 있습니다.프로그래밍 방식으로 데이터베이스 새로 고침?

내 데이터 격자에 "이전"데이터가 표시됩니다. Visual Studio 2010의 데이터베이스 탐색기에서 새로 고침을 클릭 한 경우에만 새 삽입 된 데이터가 표시됩니까?

어떻게 데이터베이스 연결을 프로그래밍 방식으로 새로 고칠 수 있습니까?

명확하게하려면 : 내 programm에의 부하에

나는 내가있는 데이터 테이블을 기대 tableAdapter.Fill(dataset.clients)this.DataContext = dataset.clients.DefaultView;

을 EEN 호출 다음 INSERT INTO clients VALUE (2, Peter, Smith) 같은 SQL 쿼리와 데이터베이스에 데이터를 넣어 dataSet은 데이터베이스에 잠시 전에 삽입 한 데이터로 채워집니다. 그 후 데이터는 dataGrid에 표시됩니다. 그러나 그런 일은 일어나지 않습니다. 디버깅을 중지하고 데이터베이스 탐색기의 새로 고침 단추를 누른 다음 다시 디버그 단추를 누르면 (디버그를 중지하고 삽입 된 데이터 만 표시됨)

+5

당신이 묻는 것은별로 의미가 없습니다. 앱의 데이터를 새로 고치려면 데이터베이스를 다시 쿼리하십시오. 데이터베이스 탐색기에서 새로 고치려면 새로 고침을 클릭하십시오. 데이터베이스 익스플로러에 데이터를 삽입했는데 새로 고침을 클릭하기 전에는 커밋되지 않았습니까? –

+0

@Kieren 일부 SQL 코드를 통해 데이터를 삽입하고 내 dataGrid에 표시되지 않습니다.데이터베이스 탐색기에서 "새로 고침"을 누르고 다시 디버깅 할 때만 데이터가 표시됩니다. –

+1

'디자인 타임'에서 새로 고침 하시겠습니까? –

답변

1

SQL CE 데이터베이스에서 바인딩하려는 경우 다음을 고려하십시오. 데이터 바인딩을 사용하는 코드를 구현합니다. 이렇게하면 데이터가 항상 그리드에서 '신선한'상태로 유지됩니다. Data Binding in WPF에 대한 몇 가지 샘플 코드가 있습니다. 당신이 디자인 타임에 그리드에서 '신선한'데이터를 볼 것으로 예상하고있는 것처럼

SqlConnection con = new SqlConnection(); 
SqlDataAdapter ad = new SqlDataAdapter(); 
SqlCommand cmd = new SqlCommand(); 
String str = "SELECT EmployeeID, FirstName, LastName, BirthDate, City, Country FROM Employees"; 
cmd.CommandText = str; 
ad.SelectCommand = cmd; 
con.ConnectionString = "Data Source=MyData.sdf;Persist Security Info=False"; 
cmd.Connection = con; 
DataSet ds = new DataSet(); 
ad.Fill(ds); 
ListViewEmployeeDetails.DataContext = ds.Tables[0].DefaultView; 
con.Close(); 

.... 

<Grid x:Name="Grid1"> 
    <ListView Name="ListViewEmployeeDetails" Margin="4,20,40,100" ItemTemplate="{DynamicResource EmployeeTemplate}" ItemsSource="{Binding Path=Table}"> 
    <ListView.View>   
     <GridView> 
     <GridViewColumn Header="Employee ID" DisplayMemberBinding="{Binding Path=EmployeeID}"/> 
     <GridViewColumn Header="First Name" DisplayMemberBinding="{Binding Path=FirstName}"/> 
     <GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding Path=LastName}"/> 
     <GridViewColumn Header="BirthDate" DisplayMemberBinding="{Binding Path=BirthDate}"/> 
     <GridViewColumn Header="City" DisplayMemberBinding="{Binding Path=City}"/> 
     <GridViewColumn Header="Country" DisplayMemberBinding="{Binding Path=Country}"/> 
     </GridView> 
    </ListView.View> 
    </ListView> 
</Grid> 

소리가 난다. "데이터베이스 탐색기에서 새로 고침"은 현재보고있는 디자인 표면을 나타냅니다.

그렇지 않으면 데이터베이스 탐색기와 런타임시의 모든 내용이 의미가 없습니다. 그리드는 양식로드, 사용자 클릭 버튼, 사용자 삽입 행 등의 이벤트에 다시 채워지거나 데이터 바인딩되어야합니다. 사용자는 데이터베이스 탐색기에 대해/알지 않아도됩니다. 그리드에 최신 데이터를 표시하는 올바른 방법은 myGrid.DataBind();

입니다. 그렇다면 그리드에 표시된 데이터가 단순히 '자리 표시 자'가되도록 의도되었으므로/중요하지 않아야 함을 제안 할 수 있습니다 '. 에 새로운 데이터를 보려는 경우 데이터베이스 탐색기를 통해 '새로 고침'을 제안 할 수 있습니다.

보고 있거나 기대하는 것이 분명하지 않습니다. 코드를 사용하여 질문을 수정하고 설명 할 수있는 스크린 샷을 제안하십시오.

+0

나는 나의 질문을 편집했다 Ik는 당신이 지금 이해할 희망을 품는다? –

0

T-SQL을 통해 일부 데이터를 삽입하면 DataGrid가 새로 고쳐지지 않습니다. 난 당신이 설정하는 방법을 잘 모르겠습니다

DataGrid1.DataBind(); //if you want the data to be refreshed. 

만의 당신이 클릭 할 때 데이터를 삽입 할 수있는 버튼이 있다고 가정하자 : 당신은 같은 그리드에 데이터 바인딩을 호출해야합니다. 당신이 데이터를 삽입하면 클릭 이벤트에서, 단지 전화 :

DataGrid1.DataBind(); //and you should see your data refreshed. 

당신이 당신의 DataGrid 컨트롤에 붙인로 DataGrid1 이름을 바꿉니다.

+0

아마도 문제는 아니지만 .databind()가 존재하지 않습니다! WPF로 만들면 어떻게해야합니까? (미안하지만 초급입니다.) –

+0

DataGrid xaml에 ItemSource = "{Binding}"을 지정하고 있습니까? – Xaisoft

+0

나는 이미 ..... ..... –

관련 문제