zoukankan
html css js c++ java
(原创)嵌套的DataGrid如何为子DataGrid动态增加模板列
例子比较简单,直接贴代码了,例子达到以下功能:
(1)两个DataGrid嵌套
(2)外面一个DataGrid分页
(3)里面一个DataGrid动态增加模板列
<%
@ Page language
=
"
c#
"
Codebehind
=
"
WebForm45.aspx.cs
"
AutoEventWireup
=
"
false
"
Inherits
=
"
csdn2.WebForm45
"
%>
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
>
<
HTML
>
<
HEAD
>
<
title
>
Test
</
title
>
<
meta
content
="Microsoft Visual Studio .NET 7.1"
name
="GENERATOR"
>
<
meta
content
="C#"
name
="CODE_LANGUAGE"
>
<
meta
content
="JavaScript"
name
="vs_defaultClientScript"
>
<
meta
content
="http://schemas.microsoft.com/intellisense/ie5"
name
="vs_targetSchema"
>
</
HEAD
>
<
body
>
<
form
id
="Form1"
method
="post"
runat
="server"
>
<
asp:datagrid
id
="DataGrid1"
runat
="server"
AutoGenerateColumns
="False"
PageSize
="2"
AllowPaging
="True"
>
<
Columns
>
<
asp:TemplateColumn
HeaderText
="分类名"
>
<
ItemTemplate
>
<%
# DataBinder.
Eval
(Container.DataItem,
"
classname
"
)
%>
<
asp:DataGrid
id
="DataGrid2"
runat
="server"
AutoGenerateColumns
="false"
></
asp:DataGrid
>
</
ItemTemplate
>
</
asp:TemplateColumn
>
</
Columns
>
</
asp:datagrid
></
form
>
</
body
>
</
HTML
>
using
System;
using
System.Collections;
using
System.ComponentModel;
using
System.Data;
using
System.Data.SqlClient;
using
System.Drawing;
using
System.Web;
using
System.Web.SessionState;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.HtmlControls;
namespace
csdn2
{
/**/
///
<summary>
///
WebForm45 的摘要说明。
///
</summary>
public
class
WebForm45 : System.Web.UI.Page
{
protected
System.Web.UI.WebControls.DataGrid DataGrid1;
private
void
Page_Load(
object
sender, System.EventArgs e)
{
//
在此处放置用户代码以初始化页面
if
(
!
IsPostBack)
{
SetBind();
}
}
private
void
SetBind()
{
SqlConnection conn
=
new
SqlConnection(System.Configuration.ConfigurationSettings.AppSettings[
"
conn
"
]);
SqlDataAdapter da
=
new
SqlDataAdapter(
"
select * from class;select * from topic
"
,conn);
DataSet ds
=
new
DataSet();
da.Fill(ds);
ds.Relations.Add(
"
class_topic
"
,ds.Tables[
0
].Columns[
"
classid
"
],ds.Tables[
1
].Columns[
"
topicclassid
"
]);
this
.DataGrid1.DataSource
=
ds.Tables[
0
];
this
.DataGrid1.DataBind();
}
Web 窗体设计器生成的代码
#region
Web 窗体设计器生成的代码
override
protected
void
OnInit(EventArgs e)
{
//
//
CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base
.OnInit(e);
}
/**/
///
<summary>
///
设计器支持所需的方法 - 不要使用代码编辑器修改
///
此方法的内容。
///
</summary>
private
void
InitializeComponent()
{
this
.DataGrid1.PageIndexChanged
+=
new
System.Web.UI.WebControls.DataGridPageChangedEventHandler(
this
.DataGrid1_PageIndexChanged);
this
.DataGrid1.ItemDataBound
+=
new
System.Web.UI.WebControls.DataGridItemEventHandler(
this
.DataGrid1_ItemDataBound);
this
.Load
+=
new
System.EventHandler(
this
.Page_Load);
}
#endregion
private
void
DataGrid1_ItemDataBound(
object
sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if
(e.Item.ItemType
==
ListItemType.Item
||
e.Item.ItemType
==
ListItemType.AlternatingItem)
{
DataGrid dgrd
=
(DataGrid)e.Item.FindControl(
"
DataGrid2
"
);
dgrd.ItemDataBound
+=
new
System.Web.UI.WebControls.DataGridItemEventHandler(
this
.DataGrid2_ItemDataBound);
TemplateColumn tm
=
new
TemplateColumn();
tm.ItemTemplate
=
new
ColumnTemplate();
tm.HeaderText
=
"
主题名
"
;
dgrd.Columns.Add(tm);
dgrd.DataSource
=
((DataRowView)e.Item.DataItem).Row.GetChildRows(
"
class_topic
"
);
dgrd.DataBind();
}
}
private
void
DataGrid1_PageIndexChanged(
object
source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
this
.DataGrid1.CurrentPageIndex
=
e.NewPageIndex;
SetBind();
}
private
void
DataGrid2_ItemDataBound(
object
sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if
(e.Item.ItemType
==
ListItemType.Item
||
e.Item.ItemType
==
ListItemType.AlternatingItem)
{
((Label)e.Item.FindControl(
"
topicname
"
)).Text
=
Convert.ToString(DataBinder.Eval(e.Item.DataItem,
"
[\
"
topicname\
"
]
"
));
}
}
}
public
class
ColumnTemplate : ITemplate
{
public
void
InstantiateIn(Control container)
{
Label l
=
new
Label();
l.ID
=
"
topicname
"
;
container.Controls.Add(l);
}
}
}
欢迎大家阅读我的极客时间专栏
《Java业务开发常见错误100例》
【全面避坑+最佳实践=健壮代码】
查看全文
相关阅读:
7年.NET面试Java的尴尬历程
服务挂后Dump日志
并发中如何保证缓存DB双写一致性(JAVA栗子)
如何通过Visual Studio来管理我们的数据库项目
无需Get更多技能,快速打造一个可持久化的任务调度
Dapper Use For Net
2014年——新的开始,新的人生
途牛网站无线架构变迁实践
windows 下解决 Time_Wait 和 CLOSE_WAIT 方法
System.Data.DbType 与其它DbType的映射关系
原文地址:https://www.cnblogs.com/lovecherry/p/145633.html
最新文章
WINDOWS MOBILE的桌面快捷方式路径
C#实现复杂XML的序列化与反序列化
使用Bootstrap Table建立父子表
基于vue.js的ui框架
转:在IIS上启用Gzip压缩(HTTP压缩)
sqlserver 导出数据字典
浅谈HTTP中get与post的区别
Windows10家庭版 远程报错:由于CredSSP加密Oracle修正
nginx升级并且使用最新版本openssl
onlyoffice支持https
热门文章
Linux安装jenkins和通过docker容器安装jenkins
k8s设置pod的外部访问ip和port
强制删除k8s集群中的pod
k8s部署docker容器
docker启动Java程序
onlyOffice安装与使用
docker 安装nginx
minio简单安装与使用
数据库作业通用代码
《ICSharpCode快速解压缩帮助类》——即粘即用
Copyright © 2011-2022 走看看