GridView에 행을 프로그래밍 방식으로 삽입하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/181158

  •  05-07-2019
  •  | 
  •  

문제

ASP.NET 2.0에 행 선택 링크가있는 데이터 펀드 뷰가 있습니다. 행이 선택되면 다른 그리드 등을 중첩하기 위해 선택한 행 아래 테이블 행을 프로그래밍 방식으로 추가하려고합니다.

나는 고객과 기사를 위해 이것을 조사하고 있으며, 오늘 밤 내 Google-FU가 강하지 않는다고 생각합니다. 제안이 있습니까?

편집 : 실제로 작동하는 솔루션이 있었지만 Visual Studio는 어떻게 든 열광했습니다. vs를 폐쇄하고 다시 열고 모든 것을 재건하면 문제가 해결되었습니다 ;-)

내 솔루션은 아래에 게시되어 있습니다. 가능하면 더 나은 방법을 알려주는 방법을 알려주십시오. 감사!

도움이 되었습니까?

해결책

나는 그것을 알아 낸 것 같아요. 다음은 작동하는 것처럼 보이는 솔루션입니다. 사용자 컨트롤을 사용하여 개선 될 수 있지만 이것이 요점입니다.

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;
}

다른 팁

이 코드를 공유해 주셔서 감사합니다.

나는 똑같은 일을하려고 노력하고 있습니다 (중첩 그리드 뷰 생성). 실제로 GridView를 직접 만들 필요는 없습니다. 대신, 당신은 단지 태그 내에서 컨트롤을 감쌀 수 있습니다. 나는 여기서 예를 보았다 http://www.codeproject.com/kb/aspnet/editnestedgridview.aspx?msg=3089755#xx33089755xx

개발자가 태그 내에서 두 번째 그리드 뷰 컨트롤을 마무리하면 GV 컨트롤을 중첩 시켰음을 알 수 있습니다.

그가 코드로하고있는 일을 할 수 있다면 더 효과적입니다. 선택한 모든 필드를 표시 할 필요는 없습니다 !! 또한 자녀 그리드 뷰에 일부 컨트롤을 시각적으로 추가 할 수 있습니다.

코드를 VB로 변환하고 완벽하게 작동했습니다.

감사

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top