簡體   English   中英

C#Datagridview:在組合框列中獲取所選項目

[英]C# Datagridview: get selected item in combobox columns

我正在開發一個允許用戶操作xml文件的GUI。 我在一個datagridview中顯示xml文件,該文件由列通過xml元素整齊地組織。 我允許用戶在我的項目中添加列作為擴展。 該列被添加到數據集表中,然后更新到我用來顯示xml文件的datagridveiew。我已經包含了用戶添加組合框列來選擇選項的能力,而不是像往常一樣輸入它們。對或錯。 然而,這就是問題所在。 保存正常的列很容易。 組合框柱很痛苦。

我有一個“保存組合框列”以將其更新為xml和“保存”按鈕以保存在用戶選擇的目的地中。

我做了一些研究,似乎組合框類具有這樣的功能,可以訪問用戶輸入的組合框中的選擇項。 我們在哪里:

    ComboBox box = new ComboBox();
    box.SelectedItem;

我嘗試將它應用於組合框列類,但它沒有這樣的功能。 因此,我無法弄清楚如何直接獲取用戶所選項的值。 我也嘗試過使用comboboxcell,但這並沒有引導我到任何地方。 我玩的那些課程都沒有...“選定項目”功能,甚至谷歌也沒有我的解決方案。 =(我也嘗試使用cell.value,但由於某種原因它是“null”。即使用戶選擇框中的項目,它也不會保存到單元格的值中。

TLDR:我的問題很簡單,如果可能的話,您如何獲得對comboboxcolumn單元格所選項目的訪問權限? 此外,您如何確保項目值保存在單元格中?

提前致謝。 我正在使用.NET 3.5 SP1,通過Visual Studio 2008 C#。

此致

tf.rz

DataGridView中的Control不是ComboBox,它是DataGridViewComboBox,具有不同的屬性和方法。 來自MSDN

與ComboBox控件不同,DataGridViewComboBoxCell沒有SelectedIndex和SelectedValue屬性。 而是從下拉列表中選擇值設置單元格Value屬性。

但是,您提到Cell.Value對您來說是空的。 根據以下文章( 如何:訪問Windows窗體DataGridViewComboBoxCell下拉列表中的對象),可能還有另一個缺少的步驟。

您必須將DataGridViewComboBoxColumn.ValueMember或DataGridViewComboBoxCell.ValueMember屬性設置為業務對象上的屬性名稱。 當用戶進行選擇時,業務對象的指示屬性設置單元格Value屬性。

如果我們將datagridcomboboxcell綁定到不同的DisplayMemberValueMember ,如下所示:

dgcombocell.DisplayMember = "Name"; 
dgcombocell.ValueMember = "Id";  
dgcombocell.DataSource = dataset1.Tables[0];

然后,為了獲取SelectedTextSelectedValue ,我們可以編寫以下代碼:

string SelectedText = Convert.ToString((DataGridView1.Rows[0].Cells["dgcombocell"] as DataGridViewComboBoxCell).FormattedValue.ToString());
int SelectedVal = Convert.ToInt32(DataGridView1.Rows[0].Cells["dgcombocell"].Value);

我希望它能解決你的問題。

使用此選項可獲取或設置所選值:

object selectedValue = currentRow.Cells["comboboxColumnName"].Value

不要忘記為DataGridViewComboBoxColumn設置DisplayMemberValueMember

這就是它的完成方式

  DataGridViewComboBoxCell comboCell = (DataGridViewComboBoxCell)dgv.Rows[0].Cells[1];

  MessageBox.Show(""+comboCell.Items.IndexOf(comboCell.Value));

我用這個:

private int GetDataGridViewComboBoxCellSelectedIndex(DataGridViewCell d)
{
     return ((DataGridViewComboBoxCell)d).Items.IndexOf(d.Value);
}

.Net combox實際上是一個由文本框和下拉列表組成的復合控件。 使用box.Text獲取當前顯示的信息。

編輯:行或單元格應該有.FindControl()方法。 你需要做的事情如下:

Combobox box = (Combobox)(row.FindControl("[combobox ID]"));
string val = box.Text;

基本上,您在其容器(行或單元格)中找到控件,然后將控件發現為組合框,然后訪問其.Text屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM