ComboBox отображает DataRowView вместо фактических значений - PullRequest
0 голосов
/ 30 июля 2011

У меня проблема с выпадающим списком, я попытался заполнить его данными, которые есть в файле myExcel.xls, но вместо фактических значений в нем отображается System.Data.DataRowView. Вот мой код:

Application excelApp = new ApplicationClass();
string strWB = "myExcel.xls";
string strWBPath = "D:\\TEMP\\";

// Opening Excel file
Workbook workbook = excelApp.Workbooks.Open(strWBPath + strWB, 0, true, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);

Worksheet worksheet = (Worksheet)workbook.Sheets.get_Item(1);
Range range = worksheet.UsedRange;

int column = 0;
int row = 0;

DataTable dt = new DataTable();
dt.Columns.Add("Agent Name");

for (row = 2; row <= range.Rows.Count; row++)
{
    DataRow dr = dt.NewRow();
    for (column = 1; column <= range.Columns.Count; column++)
    {
        dr[column - 1] = (range.Cells[row, column] as Range).Value2.ToString();
    }
    dt.Rows.Add(dr);
}
workbook.Close(true, null, null);
excelApp.Quit();

//  dataGridView1.DataSource = dt;

comboBox1.DisplayMember = "FirstName";
comboBox1.ValueMember = "Sheet1";
comboBox1.DataSource = dt;

Ответы [ 2 ]

1 голос
/ 30 июля 2011

Значение2 является объектом. Таким образом, ToString вернет значение по умолчанию, которое является именем, а не значением. Попробуйте использовать «как строку», а не «.ToString».

0 голосов
/ 29 ноября 2016

Есть ли причина не связывать comboBox1.DataSource со списком?Что-то вроде:

dt.AsEnumerable().Select(x => x["FirstName"].ToString()).ToList();
...