c # преобразование из System.Data.DataRowView в строку - PullRequest
1 голос
/ 09 ноября 2010

У меня есть поле со списком, источник данных которого является датируемым.Мне нужно просмотреть элементы в выпадающем списке, но как мне это сделать?мне нужно иметь возможность преобразовать каждый объект типа 'System.Data.DataRowView' в строку.Любой совет с благодарностью! @

Ответы [ 4 ]

3 голосов
/ 09 ноября 2010

Судя по вашим недавним вопросам, вы пытаетесь понять, как найти или установить выбранный элемент в выпадающем списке, основываясь на тексте, отображаемом в элементе. Я не совсем уверен, как у вас все настроено, но, пожалуйста, посмотрите на следующий код и посмотрите, поможет ли это:

private void button1_Click(object sender, EventArgs e)
{
    DataTable dt = new DataTable();
    dt.Columns.Add("ID", typeof(int));
    dt.Columns.Add("Name", typeof(string));

    dt.Rows.Add(1, "A");
    dt.Rows.Add(2, "B");
    dt.Rows.Add(3, "C");

    comboBox1.DataSource = dt;
    comboBox1.DisplayMember = "Name";
    comboBox1.ValueMember = "ID";

    // use SelectedValue to select the item with ID == 2
    comboBox1.SelectedValue = 2;

    // use FindStringExact() to find the index of text displayed in the item
    comboBox1.SelectedIndex = comboBox1.FindStringExact("C");
}

и используя комбинированный список, как указано выше, вы можете получить текст отображаемого элемента следующим образом:

private void button2_Click(object sender, EventArgs e)
{
    foreach (var item in comboBox1.Items)
        MessageBox.Show(((DataRowView)item)["Name"].ToString());
}
0 голосов
/ 19 июля 2018

Решение:

DataTable DtShow=new DataTable();

for (int i = 0; i < DtShow.Rows.Count; i++)

 {

   Console.WriteLine(DtShow.Rows[i].Field<string>(0));

 }

**   Field<string>(0) Column number start from 0
0 голосов
/ 09 ноября 2010

Обходной путь для того же, надеюсь, он поможет: преобразовать источник dataview обратно в datatable, а затем перебрать его.

DataView dt = (DataView)comboBox1.DataSource;
        DataTable s = dt.Table;
        foreach(DataRow dr in s.Rows)

            MessageBox.Show(dr[0].ToString()); 
0 голосов
/ 09 ноября 2010

Ну ... чтобы перебрать комбинированный список, используйте (слегка псевдокодирование, пожалуйста, не используйте c + p без работы с кодом):

var newItems = new List<string>();
for(var i = 0; i < combobox1.Items.Count; i++)
{
   newItems.Add(combobox1.items[i].Text);
}

Затем, чтобы получить доступ к каждому элементу, используйте:

foreach(item in newItems)
{
var newVariable1 = item;
}

Больше информации и ваш текущий код были бы классными, я мог бы помочь вам более конкретно решить вашу проблему таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...