Мой сценарий заключается в том, что я динамически создаю таблицу данных и добавляю ее в набор данных и отображаю ее в виде сетки. Я хочу добавить кнопку «Добавить в график» в конце каждой строки, которая будет иметь дополнительные функции.
Мой код для создания таблицы динамических данных:
try
{
response = client.query(a);
///List of fields
var fields = response.@return.fields;
//loop through each column
foreach (String column in fields)
{
dtservice.Columns.Add(column);
}
///List of value return as list of object
var values = response.@return.values.ToList();
///get the first object from the list of object
foreach (object item in values)
{
if (item == null) continue;
foreach (PropertyInfo property in item.GetType().GetProperties())
{
// do something with the property
List<string> valueList = (List<string>)(property.GetValue(item, null));
dtservice.Rows.Add(valueList.ToArray());
}
}
}
catch (Exception error)
{
var b = error.ToString();
}
//create dataset
DataSet test= new DataSet();
test.Tables.Add(dtservice);
return test;
}
Я пытался использовать приведенный ниже код, но кнопка исчезает при нажатии.
protected void WorkList_RowDataBound(object sender, GridViewRowEventArgs e)
{
// CHECK IF ROW IS NOT IN EDIT MODE
if (e.Row.RowType == DataControlRowType.DataRow)
{
// CREATE A Button
Button btn = new Button();
btn.ID = "btnEstados";
btn.Text = "Estados";
// ADD BUTTON TO EACH ROW IN 2ND COLUMN
e.Row.Cells[7].Controls.Add(btn);
}
}
вторая проблема: теперь я смог получить кнопку в каждой строке, но используя код ниже, я получил количество столбцов, равное 1. На самом деле он читает только статический столбец, добавленный в HTML, а не сгенерированный динамически.
//adding column to datatable
for (int row = 0; row < test.Columns.Count - 1; row++)
{
ServiceName.Columns.Add(test.HeaderRow.Cells[row].Text, typeof(string));
}