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例》
【全面避坑+最佳实践=健壮代码】
查看全文
相关阅读:
lua学习之环境搭建
c易错点归纳
H7-TOOS之SPI控制器功能
搜索旋转排序数组
电话号码的字母组合
打家劫舍python实现
括号生成实现
玩烂bert--集成输出预测分类、特征向量、参数冻结、推理
tensorflow 查看ckpt模型中参数值
求柱状图中最大的矩形
原文地址:https://www.cnblogs.com/lovecherry/p/145633.html
最新文章
Linux文件系统的工作原理
Oracle:foreign XXXX:能随随便便的恢复别人的备份了!!!!!
Oracle 9i 9.2.0.4 linux i386 安装:闲来尝试:各种问题、及解决
行程问题
图形题
溶液问题
资料分析的“量”与“率”
法律常识
TCP-IP 物理层
Export Data with Field Delimiters
热门文章
PL/SQL 集合的初始化与赋值
RandomAccessFile写入时中文乱码解决方案
数据库.编译
数据库.存储.区
数据库.页
摘录,硬件工程师应局部的技能
HAL库之SPI
系统分析师教程中的一些东西
版本管理工具SVN
lua高级
Copyright © 2011-2022 走看看