ListView
コントロールも含むコントロールを取得しましたGridView
。データは、データベース データベース スキームの別のテーブルから来ています:
- 本 (BookID、BookName、ISBN、CopyLeft);
- 借り手 (BorrowerID、BorrowerName、BorrowerLevel);
- トランザクション (TransactionID、BorrowerID、BookID、BorrowDate、ReturnDate、IsReturned);
対応するクラスはBook
、それぞれ 、Borrower
およびTransaction
です。
データ バインディングを使用して、これらのテーブルから、、、、、およびをGridView
フェッチ
します。XAML コード:TransactionID
BorrowerID
BorrowerName
BookName
BorrowDate
ReturnDate
<Grid>
<ListView Margin="15,57,58,57" Name="borrowedBookList" IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding }" KeyDown="borrowedBookList_KeyDown">
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Width="80" Header="Borrower ID" DisplayMemberBinding="{Binding Path=BorrowerID}"/>
<GridViewColumn Width="220" Header="Borrower Name" DisplayMemberBinding="{Binding Path=BorrowerName}"/>
<GridViewColumn Width="220" Header="Book Name" DisplayMemberBinding="{Binding Path=BookName}"/>
<GridViewColumn Width="100" Header="Date" DisplayMemberBinding="{Binding Path=BorrowDate}"/>
<GridViewColumn Width="100" Header="Return Date" DisplayMemberBinding="{Binding Path=ReturnDate}"/>
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
<Label Content="Borrowed Book List" Height="34" HorizontalAlignment="Left" Margin="310,12,0,0" Name="label1" VerticalAlignment="Top" Width="151" />
<Button Content="Close" Height="31" HorizontalAlignment="Left" Margin="636,535,0,0" Name="close" VerticalAlignment="Top" Width="106" Click="close_Click"/>
<Button Content="Return This Book" Height="31" HorizontalAlignment="Left" Margin="454,535,0,0" Name="return" VerticalAlignment="Top" Width="115" Click="return_Click"/>
</Grid>
Transaction
行をorのオブジェクトとして選択できますBook
かBorrower
? Transactions
私の目的は、行を選択し、Books
テーブルの対応するエントリを特定し、値を増やして属性CopyLeft
に「YES」を割り当てることです。IsReturned
では、どうすればこれを行うことができますか?
さらに、次のようにコーディングしようとしました:
var selectedTran = this.borrowedBookList.selectedItem as Transaction;
var selectedBook=this.borrowedBookList.selectedItem as Book;
try
{
selectedBook.CopyLeft++;
selectedTran.isReturned="YES";
}
catch(Exception ex)
{
MessageBox.Show(ex.message);
}
例外は、「オブジェクト参照がオブジェクトのインスタンスに設定されていない」ことを示しています。次に、次のようにboredBookListのタイプを見つけようとしました:
MessageBox.Show(borrowedBookList.SelectedItem.GetType().ToString());
匿名のタイプを示します。