单击数据网格行后如何获取单元格值

我有一个 C# WPF DataGrid 来列出有关文档(例如发票)的信息。用户可以在数据网格中选择一行。双击该行后,我需要访问特定的单元格值(docId)。

不幸的是,我不知道如何访问所选数据网格行后面的正确数据行。

我可以从网格中访问以下值:

dataGrid_docs.selectedValue
dataGrid_docs.selectedItem

...

selected Value 不是我的问题的答案,因为用户单击任何行,而不总是正确的列。

        // Create a new DataTable.    

        DataTable custTable = new DataTable("Customers");



        // Create docId column 

            dtColumn = new DataColumn();

            dtColumn.DataType = typeof(string);

            dtColumn.ColumnName = "docId";

            custTable.Columns.Add(dtColumn);


        // Create createDate column 

            dtColumn = new DataColumn();

            dtColumn.DataType = typeof(string);

            dtColumn.ColumnName = "createDate";

            custTable.Columns.Add(dtColumn);



        dtSet = new DataSet();

        dtSet.Tables.Add(custTable);




        foreach (var doc in docs)

        {

            myDataRow = custTable.NewRow();

            foreach (var attribute in ecoDmsAttributes)

            {                    

                myDataRow["docId"] = "123"

                myDataRow["createDate"] = "2019-08-27"

            }

            custTable.Rows.Add(myDataRow);

        }



        dataGrid_docs.ItemsSource = custTable.DefaultView;





    private void DataGrid_docs_MouseDoubleClick(object sender, MouseButtonEventArgs e)

    {

        DataRowView docid = dataGrid_docs.SelectedItem;


        txt_Debug.Text = "Clicked on docId: " + docid.ToString();

    }


动漫人物
浏览 121回答 4
4回答

幕布斯7119047

您可以按列名称从 DataRowView 检索值,例如dataRowView["docId"]private void DataGrid_docs_MouseDoubleClick(object sender, MouseButtonEventArgs e){    DataRowView dataRowView = (DataRowView)dataGrid_docs.SelectedItem;    txt_Debug.Text = "Clicked on docId: " + dataRowView["docId"];}

jeck猫

您可以尝试 DataGridView 的 CellContentClick 事件。在那里,您可以访问e.RowIndex并e.ColumnIndex获取单击的单元格的值。您可能必须以某种方式将其与另一种方法结合起来,看看它是否是双击。

芜湖不芜

你似乎最能做到这一点:DataRowView docid = dataGrid_docs.SelectedItem;ADataRowView有一个.Row 属性,它将检索视图正在传递的基础数据行:DataRow ro = (dataGrid_docs.SelectedItem as DataRowView)?.Row; var docid = ro["docId"]; //returns object. Use cast (string) or .ToString()尽管我将您的要求解释为需要 DataRow 本身,而不是视图所公开的行中的值,但这与 ash 的答案之间可能没有什么实际区别

明月笑刀无情

调用起来非常简单:            DataRowView docid = dataGrid_docs.SelectedItem as DataRowView;             txt_Debug.Text = "Clicked on: " + docid.Row["DocID"];
打开App,查看更多内容
随时随地看视频慕课网APP