我在tabControl中有来自数据库和DataGrid的数据的comboBox。
一切正常。 我在tabItem_1上的comboBox_1中选择了一些东西(DataGrid_1显示来自DB的表格,用于ComboBox_1的选择值)并切换到tabItem_2并在comboBox_2中选择一些内容(DataGrid_2显示来自DB的表格,用于我选择ComboBox_2的值)
但是当我回到TabItem_1时,来自TabItem_1的错误:
对象引用未设置为对象实例
当我确定'确定'一切正常。 我怎么解决它?
XAML代码:
async.mapSeries(modem_serial, function (m_serial_no, done) {
Modem.findOne({ m_serial_no: m_serial_no }, { _id: 0, __v:0 }, function (err, m_data) {
// if an error occurs, stop everything
if (err)
return done(err);
// if a modem is found, send it back
if (m_data)
return done(null, m_data);
// otherwise
done(null, { m_model: 'No data', m_serial_no: 'No data' });
});
}, function (err, modems) {
// when the iteration is done or if an error occurred, it will come here
console.log(err, modems);
});
CS代码:
<TabItem Background="Bisque" ToolTip="W tym oknie możesz przeglądnąć historię wypożyczeń danej ksiązki, wybierz z ComboBoxa pozycje i przycisk kliknij wczytaj">
<TabItem.Header>
<StackPanel Orientation="Horizontal" >
<TextBlock Text="Historia książęk" FontSize="16" />
</StackPanel>
</TabItem.Header>
<StackPanel>
<ComboBox x:Name="cBox_hisBooks" HorizontalAlignment="Center" Margin="5" VerticalAlignment="Top" Width="300" ToolTip="Rozwiń liste i wybierz książkę, której historie wypożyczeń chcesz wyświetlić" IsEnabled="True" Loaded ="cBox_hisBooks_Loaded" SelectionChanged="cBox_hisBooks_SelectionChanged"/>
<!-- DisplayMemberPath="HISTORies"-->
<DataGrid x:Name="dg_hisBooks" AutoGenerateColumns="False" VerticalAlignment="Center" Height="400" ToolTip="Podgląd bazy danych z ewidencja czytelników wypożyczeń, aby odświeżyć naciśnij przycisk poniżej" Loaded="dg_hisBooks_Loaded" SelectionChanged="dg_hisBooks_SelectionChanged" Margin="10,5">
<DataGrid.Columns>
<DataGridTextColumn Header="ID czytelnika" Binding="{Binding USER.USERID}"/>
<DataGridTextColumn Header="Imię czytelnika" Binding="{Binding USER.FIRSTNAME}"/>
和
private void cBox_hisBooks_Loaded(object sender, RoutedEventArgs e) // ok
{
try // próba połaczenia z baza Oracle
{
List<BOOK> books = new List<BOOK>();
using (EntitiesDBTest db = new EntitiesDBTest())
{
books = db.BOOKS.OrderBy(b => b.TITLE).ToList();
}
var combo_HB = sender as ComboBox; // zmienna przyjmujaca wartosc z ComboBoxa
combo_HB.ItemsSource = books; // zrodlo opcji do wyboru
combo_HB.DisplayMemberPath = "GetTitleWithAuthor";
combo_HB.SelectedValuePath = "BOOKID";
// combo_HB.SelectedIndex = 1; // domyslnie wybrana opcja (domyslnie 0 czyli pierwsza)
con.Close(); // zamkniecie bazy danych
}
catch (Exception Ex)
{
MessageBox.Show("Błąd ładowania listy comboBoxa w historii książek\n " + Ex.Message, "Error 1", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
答案 0 :(得分:0)
每次更改选定的选项卡时都会调用已加载。 因此,您需要在第二次调用Loaded处理程序方法时检查who是否为null。