Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从datagrid获取行的详细信息时出现问题_C#_.net_Wpf_Wpf Controls_Wpfdatagrid - Fatal编程技术网

C# 从datagrid获取行的详细信息时出现问题

C# 从datagrid获取行的详细信息时出现问题,c#,.net,wpf,wpf-controls,wpfdatagrid,C#,.net,Wpf,Wpf Controls,Wpfdatagrid,我有一个datagrid,声明如下: <DataGrid AutoGenerateColumns="True" Margin="10,174,12,35" Name="dataGridArchiveQueue" Visibility="Visible" AlternatingRowBackground="#01000000" BorderBrush="#FF688CAF" HorizontalGridLinesBrush="#37000000" VerticalGridLinesB

我有一个datagrid,声明如下:

<DataGrid AutoGenerateColumns="True" Margin="10,174,12,35" Name="dataGridArchiveQueue" Visibility="Visible" 
AlternatingRowBackground="#01000000" 
BorderBrush="#FF688CAF" 
HorizontalGridLinesBrush="#37000000" 
VerticalGridLinesBrush="#37000000" 
CanUserAddRows="False" 
CanUserDeleteRows="False" 
IsReadOnly="True" 
SelectedItem="{Binding SelectedItemArchiveGrid}" Grid.ColumnSpan="2">
     <DataGrid.Resources>
          <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
                                                         Color="LightBlue" />
     </DataGrid.Resources>
</DataGrid>
public DataView ArchiveEvents(string status, string sourceLibrary, string destinationLibrary)
        {
            var queryString = sourceLibrary == destinationLibrary &&
                                 (!String.IsNullOrEmpty(sourceLibrary) && !String.IsNullOrEmpty(destinationLibrary))
                                    ? @"SELECT  archive_queue_id AS 'ID',
                                                [status] AS 'Status' , 
                                                source_site AS 'Source Site', 
                                                source_url AS 'Source Library', 
                                                destination_site AS 'Destination Site' ,
                                                destination_url AS 'Destination Library',
                                                CASE WHEN recurring_job = 1
                                                THEN 'Yes'
                                                ELSE 'No'
                                                END AS 'Recurring Job' ,
                                                isnull(cast(last_run AS varchar(30)), 'Never') AS 'Last Run' ,
                                                isnull(cast(created_by AS varchar(30)), 'Unknown') AS 'Created By' ,
                                                created_date AS 'Created Date' ,
                                                isnull(last_modified_by, '') AS 'Last Modified By' ,
                                                isnull(cast(last_modified_date AS varchar(30)),'') AS 'Last Modified Date'
                                        FROM    marlin.archive_queue
                                        WHERE   upper([status]) LIKE '%' + upper(@status) + '%'
                                                AND upper(source_url) LIKE '%' + upper(@source_library) + '%'
                                                or upper(destination_url) LIKE '%' + upper(@destination_library) + '%'"
                                    : @"SELECT  archive_queue_id AS 'ID',
                                                [status] AS 'Status' , 
                                                source_site AS 'Source Site', 
                                                source_url AS 'Source Library', 
                                                destination_site AS 'Destination Site' ,
                                                destination_url AS 'Destination Library',
                                                CASE WHEN recurring_job = 1
                                                THEN 'Yes'
                                                ELSE 'No'
                                                END AS 'Recurring Job' ,
                                                isnull(cast(last_run AS varchar(30)), 'Never') AS 'Last Run' ,
                                                isnull(cast(created_by AS varchar(30)), 'Unknown') AS 'Created By' ,
                                                created_date AS 'Created Date' ,
                                                isnull(last_modified_by, '') AS 'Last Modified By' ,
                                                isnull(cast(last_modified_date AS varchar(30)),'') AS 'Last Modified Date'
                                        FROM    marlin.archive_queue
                                        WHERE   upper([status]) LIKE '%' + upper(@status) + '%'
                                                AND upper(source_url) LIKE '%' + upper(@source_library) + '%'
                                                AND upper(destination_url) LIKE '%' + upper(@destination_library) + '%'";


            using (var connection = new SqlConnection(GetConnectionString()))
            {
                using (var cmd = new SqlCommand(queryString, connection))
                {
                    connection.Open();

                    cmd.Parameters.AddWithValue("status", status != "Anything" ? status : "");
                    cmd.Parameters.AddWithValue("source_library", sourceLibrary != "Anything" ? sourceLibrary : "");
                    cmd.Parameters.AddWithValue("destination_library", destinationLibrary != "Anything" ? destinationLibrary : "");


                    using (var reader = cmd.ExecuteReader())
                    {
                        var dt = new DataTable();
                        dt.Load(reader);

                        connection.Close();
                        return dt.DefaultView;
                    }
                }
            }
        }
我现在尝试获取所选行的内容,以便通过按钮编辑或删除它。为此,我有以下属性:

public DataView SelectedItemArchiveGrid { get; set; }

但不知道如何访问此属性以获取当前所选项目的详细信息。

您需要将SelectedItemArchiveGrid的绑定属性类型从DataView更改为DataRowView,并且需要使用XAML上的RelativeSource进行绑定

XAML

SelectedItem="{Binding DataContext.SelectedItemArchiveGrid, RelativeSource={RelativeSource AncestorType={x:Type UserControl}, Mode=FindAncestor}}"
C#


我有这个-但我仍然不知道如何从这个项目中获得价值?如何读取此属性以获取“id”列的值?抱歉-我是新来的(虽然这是一个有助于改变这种状况的爱好项目!)选择EditeMarchivegrid[“ColumnName”]
private DataRowView _selectedItemArchiveGrid;
public DataRowView SelectedItemArchiveGrid
{
    get
    {
        return _selectedItemArchiveGrid;
    }
    set
    {
        _selectedItemArchiveGrid = value;
    }
}