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例》
【全面避坑+最佳实践=健壮代码】
查看全文
相关阅读:
Js 循环 forEach, map, for, for...in, for...of
es6 let const
es6 Symbol类型
es6 Reflect 与 Proxy
es6 Map&Set
es6箭头函数
es6数组Arrary
学写网站(一)前端配置之安装nvm、node、npm
python获取当前执行代码所在文件的地址、主程序所在地址
scrapy中的选择器下载中间件downloadmiddlewares
原文地址:https://www.cnblogs.com/lovecherry/p/145633.html
最新文章
List<Type> 随机
初学 spring
bash shell —— 循环
bash shell ——if 条件判断
Python 核心编程(第二版)——网络客户端编程
项目中需注意的一些问题
Python 核心编程(第二版)——网络编程
Python 核心编程(第二版)——执行环境
maven install 报错 The POM for com.oracle:ojdbc6:jar:11.2.0.7.0 is missing, no dependency information available
eclipse中同步git代码报错checkout conflict with files
热门文章
WebService接口实际场景应用(一)
SpringBoot项目启动
redis 数据库在linux下的安装配置与使用
pyqt5 弹窗大全--修复版
oracle 数据恢复 回滚数据
Qt ui 文件转换为python代码文件
IETester-IE兼容性测试工具
mongodb数据库创建删除、表(集合) 创建删除、数据增删改查
es6数组方法find()、findIndex()与filter()
JS 定时器的4种写法及介绍
Copyright © 2011-2022 走看看