簡體   English   中英

如何設置 ComboBox 項目以匹配 DataGridView 中的單元格

[英]How to set a ComboBox Item to match a cell in a DataGridView

我有一個設置為 DropDownList 的組合框。
我想要 select 框中與 DataGridView 行中的選定單元格匹配的相應項目。
理想情況下,單擊編輯按鈕后,報表類型 DropDown 將每月 select 以匹配突出顯示行中的時間跨度列。
我正在嘗試遍歷列表測試字符串是否匹配,如果為真則設置索引值。 我設置了一個消息框來確認兩個字符串匹配,但是它不會更改索引 position。

private void btnEdit_Click(object sender, EventArgs e)
{
    ChangeBtnVisibility();
    btnEdit.Enabled = false;
    tbReportInput.Focus();

    int selectedrowIndex = reportsDataGridView.SelectedCells[0].RowIndex;
    tbReportInput.Text = reportsDataGridView.Rows[selectedrowIndex].Cells[2].Value.ToString();

    for (int i = 0; i < cbSpan.Items.Count; i++)
    {
        MessageBox.Show("INDEX \n" + cbSpan.Items[i] + "\n\nDGV \n" + reportsDataGridView.Rows[selectedrowIndex].Cells[1].Value);
        if (cbSpan.GetItemText(cbSpan.Items[i]) == reportsDataGridView.Rows[selectedrowIndex].Cells[1].Value.ToString())
        {
            cbSpan.SelectedIndex = i;
        }
    }
}

在此處輸入圖像描述

當我使用消息框運行代碼以測試值時,我顯示兩者是相同的,但是,我的 If 沒有觸發。

在此處輸入圖像描述

出於演示目的,創建一個新項目,以免干擾現有代碼,然后執行以下操作:

  • 將 DataSet 類型的文件添加到您的項目中,並在屬性網格中,將其稱為報告
  • 打開它,右鍵單擊並添加一個數據表,將其命名為 Reports
  • 右鍵單擊該表並添加一個 Id 列。 將其類型設置為 int32。 添加時間跨度和報告數據列(默認字符串),並添加日期時間類型的時間戳列
  • 添加另一個數據表,將其命名為 TimeSpan,並有一個 Disp 和 Val 列,都是字符串
  • 保存集合
  • 切換到表單設計器
  • 在視圖菜單上顯示數據源 window,其他 windows
  • 盡可能多地展開數據源 window 樹。
  • 將 Reports 節點拖到窗體上,出現一個數據網格
  • 將 TimeSpans 節點拖到表單上,然后刪除網格和它制作的綁定導航器,只留下綁定源
  • 將報告節點下的時間跨度節點更改為組合,並將其拖到表單中。 將reportdata TextBox 節點拖到窗體中
  • 單擊時間跨度組合,將其數據源設置為時間跨度綁定源,將 displaymember 和 valuemember 屬性設置為 Disp 和 Val。 將下拉樣式設置為下拉列表
  • 切換到代碼視圖並為時間跨度條目添加一些行:

    reportingDataSet.TimeSpans.AddTimeSpansRow("Daily","Daily");
    reportingDataSet.TimeSpans.AddTimeSpansRow("Monthly","Monthly");



等等..

我知道我說它是 0 行,但是您需要來自某個地方的數據;)並且 0 行注釋是指連接 DGV 和 cobo; 該部分在上述過程中已經完成

就是這樣,只需運行應用程序

再次運行調試器后,我注意到 TimeSpan 單元格的值后面有很多空白。 修剪掉空白,現在一切都很好。

暫無
暫無

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

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