繁体   English   中英

C# DataGridView 获取选中的行/列值

[英]C# DataGridView get selected Row / Column value

我正在尝试获取所选行和特定列的值。 我已经从 stackoverflow 尝试了一些想法,但还没有奏效。 如果我使用此代码:

string strid = "";
DataRowView rowview = DG1.SelectedItem as DataRowView;
strid = rowview.Row["Id"].ToString();
MessageBox.Show(strid);

我收到此错误:

NLauncher.exe 中发生类型为“System.NullReferenceException”的未处理异常

附加信息:

Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt。

我的 XAML:

<DataGrid IsReadOnly="True" Name="DG1" ItemsSource="{Binding}" AutoGenerateColumns="False" SelectionChanged="DG1_SelectionChanged_1" SelectedItem="{Binding Path=SelectedDG1, Mode=TwoWay}" >
            <DataGrid.Columns>
                <mui:DataGridTextColumn x:Name="id" Header="#ID"  Binding="{Binding id}"/>
                <mui:DataGridTextColumn Header="Clientname" Binding="{Binding name}" />               
            </DataGrid.Columns>
            <DataGrid.ContextMenu>
                <ContextMenu >
                    <MenuItem Header="Menu 1" Click="MenuItem_Click" />
                </ContextMenu>
            </DataGrid.ContextMenu>
        </DataGrid>

我的完整 C# 代码: http : //pastebin.com/WEHV2Z6e

我只想得到所选行的“ID”列的值。

如果您的SelecetdItem像这样绑定到Property

private DataGridItem selectedDG1;

    public DataGridItem SelectedDG1
    {
        get { return selectedDG1; }
        set { selectedDG1 = value; 
            UpdateProperty("SelectedDG1"); 
            }
    }

对于 DataGrid 的 DataItem:

public class DataGridItem
{
    public string name { get; set; }

    public int id { get; set; }
}

然后可以将 ID 获取为SelectedDG1.id

并将System.Data.DataRowView rowview = DG1.SelectedItem as System.Data.DataRowView; 是错的。 这仅在ItemSourceDatatableItemSource 如果ItemSource是一个集合,则:

       var selctedItem = DG1.SelectedItem as DataGridItem;
        if (selctedItem != null)
        {
            int value = selctedItem.id;
        }

无论如何,您可以通过对该行进行 Null 检查来抑制异常:(此外,您的DataGridColumn绑定到“id”,并且您正在尝试检索也会导致 null 异常的“Id”

if (rowview != null)
        strid = rowview.Row["Id"].ToString();

您可能会收到 NullReferenceException 因为您的演员

DataRowView rowview = DG1.SelectedItem as DataRowView;

无效并返回空值。 这意味着无论 DG1.SelectedItem 是什么类型,它都不能转换为“DataRowView”类型。

对于访问 ID 本身,Kylo Ren 的回答可能是处理它的最佳方式。

编辑:因为 rowView 为 null,所以在尝试访问 Row 时会收到 NullReferenceException:

strid = rowview.Row["Id"].ToString();

有一个简单的方法可以解决这个问题。

而不是使用;

DataRowView rowview = DG1.SelectedItem as DataRowView;

用;

dynamic rowView = DG1.SelectedItem;

之后;

strid = rowview.Id.ToString();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM