当前位置:  开发笔记 > 编程语言 > 正文

如何以编程方式在GridView中插入行?

如何解决《如何以编程方式在GridView中插入行?》经验,为你挑选了1个好方法。

我在asp.net 2.0中有一个带有行选择链接的数据绑定GridView.当选择一行时,我想以编程方式在所选行下面添加一个表行,以嵌套另一个网格等.

我正在为客户和一篇文章研究这个问题,我认为今晚我的google-fu并不强大.有什么建议?

编辑:我实际上有一个工作的解决方案,但Visual Studio以某种方式被搞砸了; 关闭并重新开放VS并重建一切修复问题;-)

我的解决方案发布在下面,请告诉我如何做到更好.谢谢!



1> Steven A. Lo..:

我想我明白了.这是一个似乎有效的解决方案.它可以使用用户控件进行改进,但这是它的要点:

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

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有