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事件
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)