2016-04-14 7 views
0

エラーを最初に説明することができます。第二1で始まるながらデータバインドリストボックスに関するエラーを表示します

1.表示順序エラー

リストボックスは、項目が表示され、最初は最後が、4になります。最後の項目にも同じ問題があります。

first item missing

last 3 or 4 items order mess

2 iが400個の以上の列を有するデータテーブルとリストボックスに結合する場合、最初の項目ミスとなり、そうでエラー

を欠落行最後の一つ。

は、データ

ここ

OLEDBの方法でアクセスデータベースからデータを取得するためのC#コードであるを保存するためにACCDBを使用して、ここで

1.コードを投稿してください。私は

<ListBox Name="LbxMain" Margin="20" ItemsSource="{Binding Path=TRRecord}" HorizontalContentAlignment="Stretch"> <ListBox.ItemTemplate> <DataTemplate> <Border BorderThickness="1" BorderBrush="Gray" Margin="5"> <Grid Background="{Binding Path=StatusColor}"> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="200"/> </Grid.ColumnDefinitions> <TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding Path=ID}"/> <TextBlock Grid.Row="1" Grid.ColumnSpan="2" Text="{Binding Path=PN}"/> <TextBlock Grid.Row="2" Grid.Column="0" Text="{Binding Path=Type}"/> <TextBlock Grid.Row="3" Grid.Column="0" Text="{Binding Path=TaskType}"/> <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Path=Status}"/> </Grid> </Border> </DataTemplate> </ListBox.ItemTemplate> </ListBox> 

...私は私がすべての結合declearsはすべての権利を取得願ってい

を構築し、それを右...

public partial class MainWindow : Window 
{ 
    DataSet DsMain = new DataSet(); 
    OleDbConnection Conn = new OleDbConnection(); 
    OleDbDataAdapter Dpter = new OleDbDataAdapter(); 

    public MainWindow() 
    { 
     InitializeComponent(); 

     string StartPath = System.Windows.Forms.Application.StartupPath + @"\AltiumDatabase.accdb"; 
     Conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + StartPath); 

     try 
     { 
      Conn.Open(); 

      string strcmd = "select ID,TaskType, Status,StatusColor,PN,Type,Owner,Checker,Deadline,StartDate,Tag from TRRecord"; 
      OleDbCommand cmd = new OleDbCommand(strcmd, Conn); 
      Dpter.SelectCommand = cmd; 

      Dpter.Fill(DsMain, "TRRecord"); 

      LbxMain.DataContext = DsMain;//bind to the listbox 
     } 
     catch(Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 
     } 
     finally 
     { 
      Conn.Close(); 
     } 
    } 
} 

2.カスタムリストボックスを願っています私はINotifyPorpertyChangedを使用する必要がありますまたはObservableCollection?私はちょうどテーブルを記入した後にデータをバインドするので、変更はありません。本当に重要ですか? 誰かが助けてくれたら本当に感謝しています。誰もがこのポストを読んでくれてありがとう。

エラー...私の英語はあまり良くありません。だから私はどこか明白に記述していないか教えてください。

+0

errr ...私はちょうどこの問題の鍵を見つけるようです。それぞれのリストボックスアイテムに複雑なコンテンツがあるため、ListBox.Items.SortDescriptions.Add(新しいIDSystem.ComponentModel.SortDescription( "ID"、System.ComponentModel.ListSortDirection.Ascending)))を使用することを意味するソートの特定のルールを与える必要があります。あなたの答えは –

答えて

0

私はバインディングの次の方法を試してくださいと思います。あなたのXAMLでまた

LbxMain.DataContext = DsMain.Tables["TRRecord"]; 

<ListBox Name="LbxMain" Margin="20" ItemsSource="{Binding }" HorizontalContentAlignment="Stretch"> ... </ListBox> 

よろしく。

+0

thaksです。 私はデータバインディングを設定しようとしましたが、etherは動作しません。 私の意見では、これはリストボックスに追加された項目を並べ替える方法に関するものです。ここで混乱するのは、コントロールUI上のアイテムを表示する順序を決定する方法です。特にID、ステータス、パートナンバーなどのプロパティを持つ上記のデータの場合、どのように表示するかが決定されます。 私は今リストボックスに新しいSortDescriptionを与え、すべてのアイテムが今私が望む順序で表示されるようになりました。だから私はここでのキーは、データバインディングを構築するのではなく、あなた自身のソートの説明を与えるべきだと思います。 まだおかげで、あなたの他の考えを楽しみにしています –

関連する問題