Динамическая генерация строк GridView на основе ввода текстового поля

#c# #asp.net #visual-studio #dynamic

#c# #asp.net #visual-studio #динамический

Вопрос:

В настоящее время у меня есть gridview без строки, только заголовок. У меня есть элемент управления ASP textbox с OnTextChange событием. Поэтому каждый раз, когда я ввожу число в textbox , мой gridview будет генерировать количество строк на его основе. А внутри строки будет dropdownlist

Например, в моем textbox случае, когда я набираю number 2 , в gridview будут сгенерированы 2 строки.

В настоящее время я использую ASP.NET

Текстовое поле:

 [  2 ]
  

GridView:

 ----------------------------------------------------
| S/N |                      |                     |
----------------------------------------------------
|  1  |   [dropdownlist]     |     [dropdownlist]  |
|--------------------------------------------------|
|  2  |   [dropdownlist]     |     [dropdownlist]  |
 -------------------------------------------------- 
  

Ответ №1:

Вот фрагмент, который поможет вам начать. Внутри вашего GridView вы можете использовать <TemplateField> для создания макета, который вы хотите. После этого вы можете захотеть заглянуть в OnRowDataBound событие, чтобы заполнить выпадающие списки.

 protected void Button1_Click(object sender, EventArgs e)
{
    int rowCount = 0;

    //get the number from the textbox and try to convert to int
    try
    {
        rowCount = Convert.ToInt32(TextBox1.Text);
    }
    catch
    {
    }

    //set the new rowcount as a viewstate so it can be used after a postback
    ViewState["rowCount"] = rowCount;

    //start the function to fill the grid
    fillGrid();
}

private void fillGrid()
{
    int rowCount = 0;

    //get the current row count from the viewstate
    if (ViewState["rowCount"] != null)
    {
        rowCount = Convert.ToInt32(ViewState["rowCount"]);
    }

    //create a new DataTable with three columns.
    DataTable table = new DataTable();
    table.Columns.Add("ID", typeof(int));
    table.Columns.Add("Name", typeof(string));
    table.Columns.Add("Created", typeof(DateTime));

    //loop to add the row to the table
    for (int i = 0; i < rowCount; i  )
    {
         table.Rows.Add(0, "Name_"   i.ToString(), DateTime.Now.AddMinutes(i));
    }

    //bind the table to the grid
    GridView1.DataSource = table;
    GridView1.DataBind();
}