现有一数据库表,结构为:
科目码、科目名称、计划金额、实际支出金额、剩余金额。其中数据有主从关系,但不明确,比如说:
404-1402 10000 5000 5000
404-1402-1-2 300 100 200
404-1402-1-2-1 50 15 35
科目编码由8部分组成,每部分可由8位数字组成,没有特别的命名规则。
我现在绑定到datagrid上时,为所有的科目,但一共有5000记录,这样页面美观不太好。想实现类似论坛的效果,就是在datagird中只显示一级科目,当单击前面的加号时,显示该科目的二级科目,依次类推。动态加载不同的级数。我想用datagrid嵌套datagrid的问题来实现,不知是否可行?有更好的办法吗?或控件也行
科目码、科目名称、计划金额、实际支出金额、剩余金额。其中数据有主从关系,但不明确,比如说:
404-1402 10000 5000 5000
404-1402-1-2 300 100 200
404-1402-1-2-1 50 15 35
科目编码由8部分组成,每部分可由8位数字组成,没有特别的命名规则。
我现在绑定到datagrid上时,为所有的科目,但一共有5000记录,这样页面美观不太好。想实现类似论坛的效果,就是在datagird中只显示一级科目,当单击前面的加号时,显示该科目的二级科目,依次类推。动态加载不同的级数。我想用datagrid嵌套datagrid的问题来实现,不知是否可行?有更好的办法吗?或控件也行
行不??
http://www.dotnetjunkies.com/Tutorial/841522C9-FFBD-4C57-BD48-F62B55057FF3.dcikorBuilding a Master/Detail DataGrid Part II
http://www.dotnetjunkies.com/Tutorial/9079F8C8-0927-4A1C-9A37-B1B9E529C526.dcik
1 在 DataGrid 上右击,选 "属性生成器",再选“列”,然后添加一个模板列。
2 在 DataGrid 上右击, 选 “编辑模板列”,编辑刚才创建的模板列,在 SelectItemTemplate 中放置一个 DataGrid
3 在 DataGrid 中添加一个“选择”按钮列,在其选择事件中添加代码为刚才新建的 DataGrid 绑定数据源
<%@ Register TagPrefix="ew" Namespace="eWorld.UI" Assembly="eWorld.UI, Version=1.7.0.0, Culture=neutral, PublicKeyToken=24d65337282035f2" %>
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="lefttop2.aspx.vb" Inherits="OA.lefttop"%>
<%@ Register TagPrefix="iewc" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls" %>
<HTML>
<HEAD>
<title></title>
<meta content="Microsoft Visual Studio.NET 7.0" name="GENERATOR">
<meta content="Visual Basic 7.0" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body bgColor="#ffffff" background="../image/mainBackground.gif">
<form id="Form1" runat="server">
<TABLE id="Table1" style="WIDTH: 240px; HEIGHT: 415px" cellSpacing="1" cellPadding="1"
width="240" border="0">
<tr>
<td style="HEIGHT: 135px" colSpan="2"><asp:calendar id="Calendar1" runat="server" CellPadding="1" BorderColor="#3366CC" ForeColor="#003399"
DayNameFormat="FirstLetter" BorderWidth="1px" Font-Size="8pt" Font-Names="Verdana" BackColor="White" Height="112px" Width="232px">
<TodayDayStyle ForeColor="White" BackColor="#99CCCC"></TodayDayStyle>
<SelectorStyle ForeColor="#336666" BackColor="#99CCCC"></SelectorStyle>
<NextPrevStyle Font-Size="8pt" ForeColor="#CCCCFF"></NextPrevStyle>
<DayHeaderStyle Height="1px" ForeColor="#336666" BackColor="#99CCCC"></DayHeaderStyle>
<SelectedDayStyle Font-Bold="True" ForeColor="#CCFF99" BackColor="#009999"></SelectedDayStyle>
<TitleStyle Font-Size="10pt" Font-Bold="True" Height="25px" BorderWidth="1px" ForeColor="#CCCCFF"
BorderStyle="Solid" BorderColor="#3366CC" BackColor="#003399"></TitleStyle>
<WeekendDayStyle BackColor="#CCCCFF"></WeekendDayStyle>
<OtherMonthDayStyle ForeColor="#999999"></OtherMonthDayStyle>
</asp:calendar>
</td>
</tr>
<TR>
<TD style="WIDTH: 185px; HEIGHT: 7px" vAlign="top" bgColor="#e0e0e0"><asp:label id="Label1" runat="server" Font-Size="X-Small" Font-Names="Arial">分组设置</asp:label></TD>
<td style="HEIGHT: 7px" vAlign="top" bgColor="#e0e0e0"><asp:imagebutton id="ImageButton1" runat="server" ImageUrl="../image/upArrow.gif"></asp:imagebutton><asp:imagebutton id="ImageButton2" runat="server" ImageUrl="../image/downArrow.gif"></asp:imagebutton></td>
</TR>
<TR>
<TD vAlign="top" bgColor="gainsboro" colSpan="2"><asp:datalist id=DataList1 runat="server" Width="100%" DataKeyField="range" DataSource="<%# DataTable1 %>">
<ItemTemplate>
<FONT face="宋体"></FONT><FONT face="宋体"></FONT>
<ew:CollapsablePanel id=CollapsablePanel1 runat="server" Font-Names="Arial" Font-Size="X-Small" BorderColor="White" width="100%" ExpandImageUrl="../image/collaps.bmp" CollapseImageUrl="../image/expand.bmp" BorderStyle="Solid" TitleLinkStyle-Font-Names="Arial" TitleStyle-Font-Names="Arial" TitleStyle-Font-Size="X-Small" TitleStyle-BackColor="#FFFFCC" Collapsed="True" CollapserAlign="Left" ShowLinkOrImage="True" TitleText='<%# DataBinder.Eval(Container.DataItem,"range") %>'>
<asp:DataList id=DataList2 runat="server" Width="100%" DataKeyField="infor_type" datasource='<%# DataBinder.Eval(Container, "DataItem.myrelation1") %>'>
<ItemTemplate>
<FONT face="宋体"></FONT><FONT face="宋体"></FONT>
<ew:CollapsablePanel id="Collapsablepanel2" runat="server" BorderColor="White" Font-Size="X-Small" Font-Names="Arial" TitleText=' <%# DataBinder.Eval(Container.DataItem,"infor_type") %>' ShowLinkOrImage="True" CollapserAlign="Left" Collapsed="True" TitleStyle-BackColor="#FFFFCC" TitleStyle-Font-Size="X-Small" TitleStyle-Font-Names="Arial" TitleLinkStyle-Font-Names="Arial" BorderStyle="Solid" CollapseImageUrl="../image/expand.bmp" ExpandImageUrl="../image/collaps.bmp" width="100%">
<asp:DataList id="Datalist3" runat="server" datasource='<%# DataTable3 %>' DataKeyField="sr" Width="100%">
<ItemTemplate>
<FONT face="宋体"></FONT><FONT face="宋体"></FONT>
<ew:CollapsablePanel id="Collapsablepanel3" runat="server" BorderColor="White" Font-Size="X-Small" Font-Names="Arial" TitleText='<%# DataBinder.Eval(Container, "DataItem.sr") %>' ShowLinkOrImage="True" CollapserAlign="Left" Collapsed="True" TitleStyle-BackColor="#FFFFCC" TitleStyle-Font-Size="X-Small" TitleStyle-Font-Names="Arial" TitleLinkStyle-Font-Names="Arial" BorderStyle="Solid" CollapseImageUrl="../image/expand.bmp" ExpandImageUrl="../image/collaps.bmp" width="100%">
<asp:DataList id="Datalist4" runat="server" DataSource="<%# DataTable4 %>" DataKeyField="status" Width="100%">
<ItemTemplate>
<FONT face="宋体"></FONT><FONT face="宋体"></FONT>
<ew:CollapsablePanel id="Collapsablepanel4" runat="server" BorderColor="White" Font-Size="X-Small" Font-Names="Arial" TitleText='<%# DataBinder.Eval(Container, "DataItem.status") %>' ShowLinkOrImage="True" CollapserAlign="Left" Collapsed="True" TitleStyle-BackColor="#FFFFCC" TitleStyle-Font-Size="X-Small" TitleStyle-Font-Names="Arial" TitleLinkStyle-Font-Names="Arial" BorderStyle="Solid" CollapseImageUrl="../image/expand.bmp" ExpandImageUrl="../image/collaps.bmp" width="100%">
</ew:CollapsablePanel>
</ItemTemplate>
</asp:DataList>
</ew:CollapsablePanel>
</ItemTemplate>
</asp:DataList>
</ew:CollapsablePanel>
</ItemTemplate>
</asp:DataList>
</ew:CollapsablePanel>
</ItemTemplate>
</asp:datalist>
</TD>
</TR>
</TABLE>
</form>
</body>
</HTML>
后台
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports Microsoft.VisualBasicPublic Class lefttop
'
Me.DataColumn6.ColumnName = "sr"
CType(Me.DataSet_treedata, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.DataTable1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.DataTable2, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.DataTable3, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.DataTable4, System.ComponentModel.ISupportInitialize).EndInit() End Sub Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub#End RegionPrivate Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not IsPostBack Then
Dim drowitem As DataRow
drowitem = Me.DataTable1.NewRow()
drowitem("range") = "——今天"
DataTable1.Rows.Add(drowitem)
drowitem = Me.DataTable1.NewRow()
drowitem("range") = "——昨天"
DataTable1.Rows.Add(drowitem)
drowitem = Me.DataTable1.NewRow()
drowitem("range") = "——上周"
DataTable1.Rows.Add(drowitem) '#####################################################
drowitem = Me.DataTable2.NewRow()
drowitem("infor_type") = "工作联系函"
drowitem("range") = "——今天"
DataTable2.Rows.Add(drowitem)
drowitem = Me.DataTable2.NewRow()
drowitem("infor_type") = "会议纪要"
drowitem("range") = "——今天"
DataTable2.Rows.Add(drowitem)
drowitem = Me.DataTable2.NewRow()
drowitem("infor_type") = "任务分派"
drowitem("range") = "——今天"
DataTable2.Rows.Add(drowitem) drowitem = Me.DataTable2.NewRow()
drowitem("infor_type") = "工作联系函"
drowitem("range") = "——昨天"
DataTable2.Rows.Add(drowitem)
drowitem = Me.DataTable2.NewRow()
drowitem("infor_type") = "会议纪要"
drowitem("range") = "——昨天"
DataTable2.Rows.Add(drowitem)
drowitem = Me.DataTable2.NewRow()
drowitem("infor_type") = "任务分派"
drowitem("range") = "——昨天"
DataTable2.Rows.Add(drowitem) drowitem = Me.DataTable2.NewRow()
drowitem("infor_type") = "工作联系函"
drowitem("range") = "——上周"
DataTable2.Rows.Add(drowitem)
drowitem = Me.DataTable2.NewRow()
drowitem("infor_type") = "会议纪要"
drowitem("range") = "——上周"
DataTable2.Rows.Add(drowitem)
drowitem = Me.DataTable2.NewRow()
drowitem("infor_type") = "任务分派"
drowitem("range") = "——上周"
DataTable2.Rows.Add(drowitem) '###############################
drowitem = Me.DataTable3.NewRow()
drowitem("infor_type") = "工作联系函"
drowitem("sr") = "收件"
DataTable3.Rows.Add(drowitem)
drowitem = Me.DataTable3.NewRow()
drowitem("infor_type") = "工作联系函"
drowitem("sr") = "发件"
DataTable3.Rows.Add(drowitem) '###################################
drowitem = Me.DataTable3.NewRow()
drowitem("infor_type") = "会议纪要"
drowitem("sr") = "收件"
DataTable3.Rows.Add(drowitem)
drowitem = Me.DataTable3.NewRow()
drowitem("infor_type") = "会议纪要"
drowitem("sr") = "发件"
DataTable3.Rows.Add(drowitem) '###################################
drowitem = Me.DataTable3.NewRow()
drowitem("infor_type") = "任务分派"
drowitem("sr") = "收件"
DataTable3.Rows.Add(drowitem)
drowitem = Me.DataTable3.NewRow()
drowitem("infor_type") = "任务分派"
drowitem("sr") = "发件"
DataTable3.Rows.Add(drowitem)
Me.DataSet_treedata.Relations.Add("myrelation1", DataSet_treedata.Tables(0).Columns("range"), DataSet_treedata.Tables(1).Columns("range"))
'Me.DataSet_treedata.Relations.Add("myrelation2", DataSet_treedata.Tables(1).Columns("infor_type"), DataSet_treedata.Tables(2).Columns("infor_type"))
'Me.DataSet_treedata.Relations.Add("myrelation3", DataSet_treedata.Tables(0).Columns("range"), DataSet_treedata.Tables(1).Columns("range"))
DataList1.DataSource = DataSet_treedata.Tables(0).DefaultView
DataList1.DataBind() 'me.DataSet_treedata.Relations.Add("myrelation1",
'DataList4.DataBind()
End If
End SubEnd Class
<asp:datalist id="bordList" Runat="server" CellSpacing="0" CellPadding="2" RepeatColumns="1">
<ItemStyle Wrap="False"></ItemStyle>
<ItemTemplate>
<div class="parent">
<img id='<%# "i_"+DataBinder.Eval(Container.DataItem, "FunctionGroup_ID") %>' src="<%=Request.ApplicationPath%>/images/tree.gif" border=0><%#DataBinder.Eval(Container.DataItem, "GroupName")%>
</div>
<div class="child" id='<%# "c_"+DataBinder.Eval(Container.DataItem, "FunctionGroup_ID") %>'>
<asp:DataList id="forumList" RepeatColumns="1" DataSource='<%# getSubData(DataBinder.Eval(Container.DataItem, "FunctionGroup_ID").ToString())%>' Runat="server" CellPadding="2" CellSpacing="0">
<ItemTemplate>
<a href='<%=Request.ApplicationPath%>/<%#DataBinder.Eval(Container.DataItem, "Command")%>' target='<%#DataBinder.Eval(Container.DataItem, "target")%>'>
<img src="<%=Request.ApplicationPath%>/images/leaf2.gif" border="0"><%#DataBinder.Eval(Container.DataItem, "FunctionItemName")%>
</a>
</ItemTemplate>
</asp:DataList>
</div>
</ItemTemplate>
</asp:datalist>
aspx.cs
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if (!IsPostBack)
{
dataBind();
//getParentData();
}
} private void dataBind()
{
DataSet ds = Function.FunctionGroup.SelectUserGroup(FormsAuth.CurrentUser );
bordList.DataSource = ds;
bordList.DataBind();
} public DataSet getSubData(string groupID)
{
return Function.Function.SelectUserGroupFunction (groupID,FormsAuth.CurrentUser );
}