簡體   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