C# 如何从单列datatable加载DataGrid?

C# 如何从单列datatable加载DataGrid?,c#,wpf,datatable,datagrid,C#,Wpf,Datatable,Datagrid,我从数据库查询中加载一个单列datatable。然后,我想将datatable分配给datagrid。datatable加载良好,但datagrid未加载。我在其他代码中这样做,效果很好。我不明白为什么它在这里不起作用 XAML代码: <DataGrid IsReadOnly="True" Name="dtCIDGrid" Background="#FFE8F9FF" HorizontalAlignment="

我从数据库查询中加载一个单列datatable。然后,我想将datatable分配给datagrid。datatable加载良好,但datagrid未加载。我在其他代码中这样做,效果很好。我不明白为什么它在这里不起作用

XAML代码:

    <DataGrid 
        IsReadOnly="True" 
        Name="dtCIDGrid" 
        Background="#FFE8F9FF" 
        HorizontalAlignment="Left" 
        VerticalAlignment="Top" 
        Height="150" 
        Margin="24,66,0,0" 
        Width="240" 
        BorderThickness="1" 
        BorderBrush="Black" 
        >
        <DataGrid.Resources>
            <Style TargetType="{x:Type DataGridCell}">
                <Style.Triggers>
                    <Trigger 
                        Property="DataGridCell.IsSelected" 
                        Value="True">
                        <Setter Property="Background" Value="#FF9DF3D6" />
                        <Setter Property="Foreground" Value="#000000" />
                    </Trigger>
                </Style.Triggers>
            </Style>
        </DataGrid.Resources>

您试图在何处将
数据表
分配给
数据网格
?在代码隐藏中?对不起,我刚刚更新了完整的代码,不确定为什么复制粘贴没有所有内容什么是
dtCIDData
?显示声明的位置,是否检查了
dtCIDData。DefaultView
有行?我添加了创建数据表的例程#Abin Mathew--dtCIDData.DefaultView有日期,dtCIDGrid.ItemsSource有数据。但是,dtCIDGrid.Columns计数为0。应该是1。我不知道为什么不是。您试图将
DataTable
分配给
DataGrid
?在代码隐藏中?对不起,我刚刚更新了完整的代码,不确定为什么复制粘贴没有所有内容什么是
dtCIDData
?显示声明的位置,是否检查了
dtCIDData。DefaultView
有行?我添加了创建数据表的例程#Abin Mathew--dtCIDData.DefaultView有日期,dtCIDGrid.ItemsSource有数据。但是,dtCIDGrid.Columns计数为0。应该是1。我不知道为什么不是。
private void LoadCardIssueDates(string strClientID, SqlConnection sqlConn, string strErrorLogFile)
    {
        bool blnSuccess = false;
        DataTable dtCIDData = new DataTable();


        dtCIDData.Columns.Add("Card Issue Date", typeof(string));

        blnSuccess = GetCardIssueDates(strClientID, sqlConn, dtCIDData, strErrorLogFile);
    }

private bool GetCardIssueDates(string strClientID, SqlConnection sqlConn, DataTable dtCIDData, string strErrorLogFile)
    {
        string strCardIssueDate = string.Empty;
        string[] strDatePieces = new string[3];
        DateTime dtCardIssueDate = Convert.ToDateTime("01/01/1900");
        bool blnSuccess = false;


        if (sqlConn != null && sqlConn.State == ConnectionState.Open)
        {
            try
            {
                using (SqlCommand sqlCmd = new SqlCommand("GetCardIssueDates", sqlConn))
                {
                    sqlCmd.CommandType = CommandType.StoredProcedure;

                    sqlCmd.Parameters.Add("@ClientID", SqlDbType.Char, 36);

                    // set parameter values that your code will send to the SP as parameter values
                    sqlCmd.Parameters["@ClientID"].Value = strClientID;

                    using (SqlDataReader sdrData = sqlCmd.ExecuteReader())
                    {
                        while (sdrData.Read())
                        {
                            if (sdrData.IsDBNull(0))
                            {
                                strCardIssueDate = string.Empty;
                            }
                            else
                            {
                                dtCardIssueDate = (DateTime)sdrData["issuedate"];
                                strCardIssueDate = dtCardIssueDate.ToString("MM/dd/yyyy");
                            }

                            dtCIDData.Rows.Add(strCardIssueDate);
                        }

                        dtCIDGrid.ItemsSource = dtCIDData.DefaultView;

                        sdrData.Close();
                    }

                    sqlCmd.Clone();
                    sqlCmd.Dispose();

                    blnSuccess = true;
                }

                blnSuccess = true;
            }
            catch (SqlException sqlex)
            {
                WriteCIDErrorLog("InsertCardIssueDate", sqlex.Message, strErrorLogFile, false);
                System.Windows.MessageBox.Show("InsertCardIssueDate: SQL Error, " + sqlex.Message + ", has occurred.");
                blnSuccess = false;
            }
            catch (InvalidOperationException invex)
            {
                WriteCIDErrorLog("InsertCardIssueDate", invex.Message, strErrorLogFile, false);
                System.Windows.MessageBox.Show("InsertCardIssueDate: Invalid Operation Error, " + invex.Message + ", has occurred.");
                blnSuccess = false;
            }
            catch (Exception exQuery)
            {
                WriteCIDErrorLog("InsertCardIssueDate", exQuery.Message, strErrorLogFile, false);
                System.Windows.MessageBox.Show("InsertCardIssueDate: Exception Error, " + exQuery.Message + ", has occurred.");
                blnSuccess = false;
            }
        }
        else
        {
            WriteCIDErrorLog("InsertCardIssueDate", "There is no database connection.", strErrorLogFile, false);
            System.Windows.MessageBox.Show("InsertCardIssueDate: There is no database connection.");
        }

        return blnSuccess;
    }