Как программно вставить строку в GridView?

У меня есть привязка к базе данных GridView в asp.net 2.0 со ссылкой для выбора строки. Когда выбрана строка, я хочу программно добавить строку таблицы под выбранной строкой, чтобы вложить другую сетку и др.

Я исследую это для клиента и для статьи, и я думаю, что мой гугл-фу сегодня не силен. Какие-либо предложения?

Обновлено: У меня действительно было рабочее решение, но Visual Studio каким-то образом завалила; закрытие и повторное открытие VS и восстановление всего устранили проблему ;-)

Мое решение опубликовано ниже, расскажите, пожалуйста, как его можно улучшить. Спасибо!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
0
28 072
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Думаю, я разобрался. Вот решение, которое, кажется, работает. Его можно улучшить с помощью пользовательских элементов управления, но суть этого заключается в следующем:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow && 
        (e.Row.RowState & DataControlRowState.Selected) > 0)
    {
        Table tbl = (Table)e.Row.Parent;
        GridViewRow tr = new GridViewRow(e.Row.RowIndex + 1, -1,
            DataControlRowType.EmptyDataRow, DataControlRowState.Normal);
        TableCell tc = new TableCell();
        tc.ColumnSpan = GridView1.Columns.Count;
        tc.Controls.Add(
            makeChildGrid(Convert.ToInt32(
                ((DataRowView)e.Row.DataItem)["ROW_ID_FIELD"])));
        tr.Cells.Add(tc);
        tbl.Rows.Add(tr);
    }
}

protected GridView makeChildGrid(int id)
{
    GridView gv = new GridView();
    SqlDataSource sqlds = new SqlDataSource();
    sqlds.DataSourceMode = SqlDataSourceMode.DataSet;
    sqlds.ConnectionString = SqlDataSource1.ConnectionString;
    sqlds.SelectCommand = "SELECT * from MY_TABLE_NAME " +
        "WHERE KEY_FIELD = " + id.ToString();
    DataView dv = (DataView)sqlds.Select(DataSourceSelectArguments.Empty);
    gv.DataSource = dv;
    gv.DataBind();    //not sure this is necessary...?
    return gv;
}

Спасибо, что поделились этим кодом.

Я пытаюсь сделать то же самое (создать вложенное представление сетки), но на самом деле вам не нужно создавать представление сетки самостоятельно. Вместо этого вы можете просто заключить элемент управления в теги. Я видел здесь пример http://www.codeproject.com/KB/aspnet/EditNestedGridView.aspx?msg=3089755#xx3089755xx

Вы увидите, что разработчик вложил элемент управления gv, просто заключив второй элемент управления gridview в теги.

Если вы МОЖЕТЕ делать то, что он делает, с помощью кода, это будет более эффективно. Вам не нужно отображать все выбранные поля !! Кроме того, вы могли бы визуально добавить некоторые элементы управления в ваше дочернее представление сетки.

Я преобразовал ваш код в vb и отлично работаю.

Спасибо

Другие вопросы по теме