如何测试任何数据类型的DBNull?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何测试任何数据类型的DBNull?相关的知识,希望对你有一定的参考价值。
我已经在网上浏览了几天,似乎找不到我的错误的出路。在我的代码中,有一个方法调用我的Get_Data来执行简单的选择并填充wpf datagrid。现在我面临的问题是,执行该方法时,它将为DBNull引发错误。该表允许某些列具有空值。
表格:
[WorkId] INT IDENTITY (100, 1) NOT NULL,
[fk_CustId] INT NULL,
[CustPartNum] NVARCHAR (25) NULL,
[QtyPieces] INT NOT NULL,
[WoDateCreated] DATETIME DEFAULT (getdate()) NULL,
[WoDeliverDate] DATETIME NOT NULL,
[WoCompleted] BIT NULL,
[WoCompleteDate] DATETIME NULL,
PRIMARY KEY CLUSTERED ([WorkId] ASC),
FOREIGN KEY ([fk_CustId]) REFERENCES [dbo].[Customers] ([CustId])
clsDB:
public static SqlConnection DB_Connect()
{
// Created connection to local DB
string cn_String = Properties.Settings.Default.ShopSystemConnectionString;
SqlConnection cn_Connect = new SqlConnection(cn_String);
if (cn_Connect.State != ConnectionState.Open) cn_Connect.Open();
return cn_Connect;
}
public static DataTable Get_Data(string SQL_Text)
{
SqlConnection cn_Connect = DB_Connect();
DataTable table = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter(SQL_Text, cn_Connect);
adapter.Fill(table);
if (table.Rows.Count == 0)
{
MessageBox.Show("No record available for the selected line");
}
return table;
}
非常感谢任何帮助或建议
编辑1
XAML代码
<DataGrid x:Name="gridCustWO" Height="190" Canvas.Left="293" Width="734" FontSize="11" BorderThickness="1" Background="#FF725D55" IsReadOnly="True" AutoGenerateColumns="False" ItemsSource="{Binding WorkOrders}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding WorkId}" Width="Auto" Header="ID"/>
<DataGridTextColumn Binding="{Binding CustPartNum}" Width="Auto" Header="Part Number"/>
<DataGridTextColumn Binding="{Binding QtyPieces}" Width="Auto" Header="Qty Total"/>
<DataGridTextColumn Binding="{Binding WoDateCreated}" Width="Auto" Header="Order Created"/>
<DataGridTextColumn Binding="{Binding WoDeliverDate}" Width="Auto" Header="Shipped"/>
<DataGridTextColumn Binding="{Binding WoCompleteDate}" Width="Auto" Header="WO Completed"/>
</DataGrid.Columns>
</DataGrid>
答案
[不是100%肯定会行得通,但我的假设是,通过使用DataGridTextColumns并绑定数据,它将尝试将它们转换为字符串,一种解决方法是将datagrid更改为:
<DataGrid x:Name="gridCustWO" Height="190" Canvas.Left="293" Width="734" FontSize="11" BorderThickness="1" Background="#FF725D55" IsReadOnly="True" AutoGenerateColumns="True" />
并以编程方式设置ItemsSource并隐藏任何列并更改标题,例如:
gridCustWO.ItemsSource = myDataTable.DefaultView;
// if you want to hide a column
gridCustWO.Columns[0].Visibility = Visibility.Hidden;
希望这会有所帮助!
以上是关于如何测试任何数据类型的DBNull?的主要内容,如果未能解决你的问题,请参考以下文章