GridView中选择某行显示更多数据

简介:
最近看到看一篇关于GridView的文章!!感觉还不错,想和大家分享一下。。。
此程序实现的是选中GridView某一行后显示更多的信息。
(1)首先新建个页面,添加一个GridView控件,我以Products为例,这是源中的代码:
 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataKeyNames="Pr_Id" DataSourceID="SqlDataSource1" EnableViewState="False" 
            onprerender="GridView1_PreRender">
            <Columns>
                <asp:BoundField DataField="Pr_Id" HeaderText="Pr_Id" InsertVisible="False" 
                    ReadOnly="True" SortExpression="Pr_Id" />
                <asp:BoundField DataField="Pr_Name" HeaderText="Pr_Name" 
                    SortExpression="Pr_Name" />
                <asp:CommandField ShowSelectButton="True" />
            </Columns>
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:testConnectionString %>" 
            SelectCommand="SELECT [Pr_Id], [Pr_Name] FROM [Products]">
        </asp:SqlDataSource>
    (2)在cs文件中,我们调用GridView1_PreRender的事件。此外我们还需要四个方法体:1, CreateRow();2,CreateColumn();3, CreateDetailsView();4, CreateDataSourceControl()。下面是代码:
  protected void GridView1_PreRender(object sender, EventArgs e)
    {
        if (GridView1.SelectedRow != null)
        {
            Table table = GridView1.SelectedRow.Parent as Table;
            if (table != null)
            {
                CreateRow(table,GridView1.SelectedIndex);
            }
        }
    }
    private void CreateRow(Table table, int index)
    {
        GridViewRow row = new GridViewRow(-1,-1,DataControlRowType.DataRow,DataControlRowState.Normal);
        row.Cells.Add(CreateColumn());
        table.Rows.AddAt(index+2,row);
    }
    private TableCell CreateColumn()
    {
        TableCell tc = new TableCell();
        tc.ColumnSpan = GridView1.Columns.Count;
        tc.Width = Unit.Percentage(100);
        DataSourceControl ds = CreateDataSourceControl();
        tc.Controls.Add(ds);
        tc.Controls.Add(CreateDetailsView(ds));
        return tc;
    }
    private static DetailsView CreateDetailsView(DataSourceControl ds)
    {
        DetailsView dv = new DetailsView();
        dv.AutoGenerateRows = true;
        dv.DataSourceID = ds.ID;
        return dv;
    }
    private DataSourceControl CreateDataSourceControl()
    {
        SqlDataSource ds = new SqlDataSource();
        ds.ConnectionString = WebConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString;
        ds.SelectCommand = "select * from Products where  Pr_Id=@Pr_Id";
        ds.ID = "SqlDataSource2";
        Parameter cp = new Parameter("Pr_Id",TypeCode.String,GridView1.SelectedValue.ToString());
        ds.SelectParameters.Add(cp);
        return ds;
    }
(3)然后运行aspx文件,可以看到效果。



 本文转自 王祖康 51CTO博客,原文链接:http://blog.51cto.com/wzk89/361619 ,如需转载请自行联系原作者
相关文章
|
10天前
用dragstart、drag、dragend、dragover、drop、dragleave实现针对表格列的顺序进行拖拽排序(附带实现选择某几列数据显示或隐藏)
用dragstart、drag、dragend、dragover、drop、dragleave实现针对表格列的顺序进行拖拽排序(附带实现选择某几列数据显示或隐藏)
|
5月前
|
前端开发
dataTable列内容过长隐藏
dataTable列内容过长隐藏
|
11月前
|
消息中间件 存储 缓存
RecyclerView 刷新列表数据的 notifyDataSetChanged() 为什么是昂贵的?
RecyclerView 刷新列表数据的 notifyDataSetChanged() 为什么是昂贵的?
53 0
|
数据库管理
sqlite实用技巧:查询表数据时,使用列对齐,显示表头
sqlite实用技巧:查询表数据时,使用列对齐,显示表头
sqlite实用技巧:查询表数据时,使用列对齐,显示表头
|
C#
C# ListBox实现显示插入最新的数据的方法
原文:C# ListBox实现显示插入最新的数据的方法 在我们使用ListBox控件时,如果我们在里面不断的添加一条条数据,但是在我们添加的数据过多超过了ListBox显示的窗口时(此时会产生滑动条), 发现我们无法看到最新添加的数据。
1666 0
HorizontalScrollView包裹RecyclerView,使用StaggeredGridLayoutManager均分网格形成表格状列表,不固定列,每次刷新数据列位置异常错乱变动问题
HorizontalScrollView包裹RecyclerView,使用StaggeredGridLayoutManager均分网格形成表格状列表,不固定列,每次刷新数据列位置异常错乱变动问题 问题描述:用Horizon...
1940 0
|
JavaScript 前端开发 .NET