#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();
}