asp.net 在gridview中动态插入一个gridview控件

asp.net 在gridview中动态插入一个gridview控件,第1张

gridview中动态插入一个gridview控件?

我们一般开发不会用GridView套用GridView 因为GridView绑定的都是列.

取行在绑定下个gridview控件做的话很复杂。

用Repeater+GridView来做,第一层用Repeater数据.

同时第一层的数据通过查询绑定下个GridView中即可

前台 *** 作:

 <asp:Repeater ID="Repeater1" DataSourceID="SqlDataSource1"  runat="server" 

        onitemdatabound="Repeater1_ItemDataBound">

        <HeaderTemplate>

            <table border="0" cellspacing="0" cellpadding="0" width="100%">

                <thead>

                    <td>编号</td>

                    <td>名称</td>

                    <td>类型</td>

                </thead>

        </HeaderTemplate>

        <ItemTemplate>

            <tr>

                <td>

                  <asp:Label ID="Label1" runat="server" Text='<%# Eval("id")%>'>

                  </asp:Label>

                 </td>

                <td><%# Eval("name")%></td>

                <td><%# Eval("type")%></td>

            </tr>

            <tr>

                <td colspan="3">

                    <asp:GridView  ID="GridView2" runat="server">

                    </asp:GridView>    

                </td>

            </tr>

        </ItemTemplate>

        <FooterTemplate>

          </table>

        </FooterTemplate>

    </asp:Repeater>

后台 *** 作:

protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)

    {

 

        if (!e.Item.ItemIndex.Equals(-1))

        {

            GridView gvInfo = (GridView)e.Item.FindControl("GridView2")

            string id = (e.Item.FindControl("Label1") as Label).Text

            gvInfo.DataSource = SQLDBHelper.CreateIntance().GetDataSet("select * from Tab where id=" + id)

            gvInfo.DataBind()

            Response.Write(id)

        }

    }

效果图如下外层Repeater 内层通过外层编号绑定GridView:

如有问题可以追问,我当及时回答.

希望能帮到你!

首先你要明确的是gridview的显示数据全部是从数据源里查出来的

不管是DataSource还是一个List还是DataTable

所以你想改变前边的显示数据就必须要改变数据源(用js实现除外)

假设你的数据源是List(对象名:list)

1.添加一行:

从页面中获得新值的数据(放几个文本框手动输入)

点一个按钮时

实例化一个对像(你数据的封装对象)

比如叫UserInfo

UserInfo

newUser

=

new

UserInfo()

newUser.Name

=

"获得文本框的值"

newUser.Address

=

"获得文本框的值"

list.Add(newUser)

BindMethod()//绑定数据的方法

2.删除数据:

比如你想删除第二行

当点击按钮时要把2传给方法或都保证能从后台获取到

list.RemoveAt(2)//2是获取到的

BindMethod()

不知道是不是这个意思

1、直接查询出来。如楼上的说法。

2、在gridview的rowdatabound事件中来替换

if(e.cells[对应列].text== 0)

{

e.cells[对应列].text = "支出"

}

else

{

e.cells[对应列].text = "收入"

}

补充一下方法2

动态生成的情况下,需要在页面级定义gridview变量,并且在pageload时声明rowdatabound事件


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7868301.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存