2016-08-17 3 views
0

DataGrid에 Inventory이라는 로컬 SQL Server 데이터베이스의 항목을 채우려는 것입니다. 나는 어떤 오류도 내지 않지만 내 테이블은 비어 있습니다.SQLGate 데이터베이스를 사용하여 DataGrid 채우기

은 참고 다음 Inventory 데이터베이스를 열 ItemNumber, Name, CostQuantityOnHand을 가지고 Item라는 테이블이 있습니다. DataGrid 이름은 dgInventory입니다. 어떤 도움을 주시면 감사하겠습니다.

<UserControl x:Class="FinalAssignment.Views.InventoryView" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:FinalAssignment.Views" 
     mc:Ignorable="d"> 
    <Grid> 
     <DataGrid Name="dgInventory" AutoGenerateColumns="False"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="Item Number" Binding="{Binding ItemNumber}" /> 
       <DataGridTextColumn Header="Name" Binding="{Binding Name}" /> 
       <DataGridTextColumn Header="Cost" Binding="{Binding Cost}" /> 
       <DataGridTextColumn Header="Quantity on Hand" Binding="{Binding QuantityOnHand}" /> 
      </DataGrid.Columns> 
      <DataGrid.RowDetailsTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding Details}" Margin="10" /> 
       </DataTemplate> 
      </DataGrid.RowDetailsTemplate> 
     </DataGrid> 
    </Grid> 
</UserControl> 

가 여기 내 .cs 코드입니다 :

여기 내 .xaml 코드의

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Shapes; 
using System.Data; 
using System.Data.SqlClient; 

namespace FinalAssignment.Views 
{ 
    /// <summary> 
    /// Interaction logic for InventoryView.xaml 
    /// </summary> 
    public partial class InventoryView : UserControl 
    { 
     public InventoryView() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      string strConnection = "Server=ASHLEY-PC\\SQLEXPRESS;Database=Inventory;Trusted_Connection=true"; 

      SqlConnection con = new SqlConnection(strConnection); 

      SqlCommand sqlCmd = new SqlCommand(); 
      sqlCmd.Connection = con; 
      sqlCmd.CommandType = CommandType.Text; 
      sqlCmd.CommandText = "select ItemNumber, Name, Cost, QuantityOnHand from Item"; 
      SqlDataAdapter sqlDataAdap = new SqlDataAdapter(sqlCmd); 

      DataTable dt = ((DataView)dgInventory.ItemsSource).ToTable(); 
      sqlDataAdap.Fill(dt); 
     } 
    } 
} 

답변

2

당신은 현재의 코드에서 그리드의 DataSource를 지정하지 않은; 그리드의 헤더를 생성 할 필요가 없습니다. 바인딩 테이블에서 자동으로 할당됩니다. 다음 조각

<DataGrid Name="dgInventory" ItemsSource="{Binding}" AutoGenerateColumns="False"> 

와 백엔드 코드가 될 것입니다 고려 :

sqlCmd.CommandText = "select ItemNumber as Item Number, Name, Cost, QuantityOnHand as Quantity on Hand from Item"; 
SqlDataAdapter sqlDataAdap = new SqlDataAdapter(sqlCmd); 
DataTable dt = new DataTable(); 
sqlDataAdap.Fill(dt); 
dgInventory.ItemsSource = dt.DefaultView; 
+0

감사합니다. gridEmployees 대신 dgInventory를 의미합니까? –

+0

예, 게시물을 업데이트했습니다.보세요 ... 문제가 해결 될 것으로 기대하십시오. –

+0

흠. 그래도 작동이 안되는. 내 strConnection과 관련이 있다고 생각합니다. 내 서버 이름은 ASHLEY-PC \ SQLEXPRESS입니다. : –

0

당신은 ItemsSource이처럼 XAML에서 데이터 그리드 바인딩 대신 .cs 뒤에 코드에서 일을 지정하고 할당 할 수 있습니다 이

01처럼 보일 것입니다 귀하의를 Form1_Load 방법

<Grid> 
<DataGrid Name="dgInventory" AutoGenerateColumns="False" ItemsSource="{Binding Path=MyDataBinding}" Loaded="Form1_Load" > 
     <DataGrid.Columns> 
        <DataGridTextColumn Header="Item Number" Binding="{Binding ItemNumber}" /> 
        <DataGridTextColumn Header="Name" Binding="{Binding Name}" /> 
        <DataGridTextColumn Header="Cost" Binding="{Binding Cost}" /> 
        <DataGridTextColumn Header="Quantity on Hand" Binding="{Binding QuantityOnHand}" /> 
       </DataGrid.Columns> 
       <DataGrid.RowDetailsTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding Details}" Margin="10" /> 
        </DataTemplate> 
       </DataGrid.RowDetailsTemplate> 
       </DataGrid> 
      </Grid> 

을과 Xaml.cs에 속성을로드

희망 하시겠습니까?

관련 문제