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例》
【全面避坑+最佳实践=健壮代码】
查看全文
相关阅读:
寻找 身边的幸福
XML指南——XML 确认
你最隐秘的性格在哪?
不用邀请也可以申请GMail的方法
XMLDOM对象方法:Document对象方法
XPath函数
XML指南——微软的XML解析器
简/繁体互相转换
WEB程序开发常用小工具包
职业规划之电脑程序员的蘑菇定律
原文地址:https://www.cnblogs.com/lovecherry/p/145633.html
最新文章
XML指南——XML 命名空间
XML指南——XML 语法
XML指南——XML元素
爱之系列
XML指南——XML 浏览器(Netscape、Explorer)
XML指南——察看 XML 文件
电脑高手最常用五个组合键
史上最强的MSN聊天记录!
韩国生活创意小图
JS写的Cookie类
热门文章
XML指南——XML编码
VSS使用手册
程序创业:创业者的十大“必杀技”
仿Office 2003的工具条
建国以来的全套人民币图片
动态载入树 (ASP+数据库)
URL解码(Decode)/编码(Encode)
XMLDOM对象方法:对象属性
AdodbStream的方法和属性浅述
Windows操作系统快捷键大全
Copyright © 2011-2022 走看看