Colocar elementos desplegables en filas de datagridview

programación


I want to pull all the items in the drop-down menu one by one into the datagridview rows using Selenium in C#. Can you help me on this issue?

Lo que he probado:

Probé los siguientes códigos.

I tried the code below, but these codes pull all elements into one line.

<pre lang="C#">
List<IWebElement> selectElements = drv.FindElements(By.Id("dersler"));
foreach (IWebElement select in selectElements)
{
    var selectElement = new SelectElement(select);
    List<string> lst = new List<string>();
    lst.Add(select.Text);
    DataTable dt = new DataTable();
    DataColumn dtcol = new DataColumn(select.Text);
    dt.Columns.Add(dtcol);
    for (int i = 0; i < lst.Count; i++)
    {
       dataGridView1.DataSource = dt;
    }

}

Solución 1

Según su fragmento de código, hay un par de problemas que podrían provocar un comportamiento inesperado. Estas creando un DataTable dentro del bucle, lo que hace que se reinicie con cada iteración. Para solucionar este problema, mueva el DataTable creación fuera del bucle y establezca el DataTable como el DataSource después del bucle. A continuación se muestra la versión actualizada de su código:

C#
List<IWebElement> selectElements = drv.FindElements(By.Id("dersler"));
// Create DataTable outside the loop to avoid resetting it in each iteration
DataTable dt = new DataTable();
foreach (IWebElement select in selectElements)
{
    var selectElement = new SelectElement(select);

    // Create a new column for each dropdown
    DataColumn dtcol = new DataColumn(selectElement.Text);
    dt.Columns.Add(dtcol);

    // Create a new row for each option in the dropdown
    foreach (IWebElement option in selectElement.Options)
    {
        DataRow row = dt.NewRow();
        row[selectElement.Text] = option.Text;
        dt.Rows.Add(row);
    }
}
// Set the DataTable as the DataSource after the loop
dataGridView1.DataSource = dt;

コメント

タイトルとURLをコピーしました