Как отобразить данные из текстового поля в Gridview, используя общий список (типизированный список)?

Я создал два текстовых поля для ввода FirstName и LastName сотрудника в веб-приложении ASP.NET с использованием C# в Visual Studio 2010. Существует кнопка. когда я нажимаю на него, значения, которые я ввожу в TextBoxes, должны отображаться в Gridview без сохранения этих значений в базе данных. Я уже реализовал это с помощью ArrayList, как показано ниже. Но теперь я хочу реализовать это с помощью Generic List (Typed List). Как я могу это сделать? Можете ли вы предоставить пример кода для выполнения вышеупомянутых функций?

Как я могу настроить код, приведенный ниже, для реализации функциональности с использованием универсального списка (Typed List)?

**

    protected void btnTextDisplay_Click(object sender, EventArgs e)
    {
        ArrayList arr;

        if (Session["array"] == null)
        {
            arr = new ArrayList();
        }
        else
        {
            arr = (ArrayList)Session["array"];
        }

        arr.Add(txtName.Text + "," + txtCity.Text); //store textbox values in the array list
        Session["array"] = arr;

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

        for (int i = 0; i < arr.Count; i++)
        {
            string[] arrVal;
            arrVal = arr[i].ToString().Split(',');
            dt.Rows.Add(arrVal[0], arrVal[1]);
        }

        gvDisplay.DataSource = dt;
        gvDisplay.DataBind();
    }

**

1 ответ

Решение

Ты можешь использовать List<string> вместо ArrayList

protected void btnTextDisplay_Click(object sender, EventArgs e)
    {
       List<string> list;

        if (Session["list"] == null)
        {
            list = new List<string>();
        }
        else
        {
            list = (List<string>)Session["list"];
        }

        list.Add(txtName.Text + "," + txtCity.Text); //store textbox values in the array list
        Session["list"] = list;

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

        for (int i = 0; i < list.Count; i++)
        {
            string[] arrVal;
            arrVal = list[i].ToString().Split(',');
            dt.Rows.Add(arrVal[0], arrVal[1]);
        }

        gvDisplay.DataSource = dt;
        gvDisplay.DataBind();
    }

Гораздо лучший подход может быть:

Если вы определяете класс как:

class Employee
{
    public string FirstName { get; set; }
    public string City { get; set; }
}

а потом:

    protected void btnTextDisplay_Click(object sender, EventArgs e)
    {
        List<Employee> list;
        if (Session["list"] == null)
        {
            list = new List<Employee>();
        }
        else
        {
            list = (List<Employee>)Session["list"];
        }
        list.Add(new Employee() { FirstName = txtName.Text, City = txtCity.Text }); //store textbox values in the array list
        Session["list"] = list;
        gvDisplay.DataSource = list; //directly bind the list to the grid
        gvDisplay.DataBind();
    }
Другие вопросы по тегам