用Table中嵌套DataList,在DataList的ItemTemplate中加入Table很容易实现.
解决方案 »
- 关于C# textbox 控件自动填充问题
- 母版页的图片能正常显示,内容页的显示不了
- socket中 每10秒获取一次数据
- dataapter.update(ds.tablename)更改数据库失败
- 跪求 .Net(C#)面试试题与答案,最可能的面试试题与答案
- 菜鸟求助:visual stdio2003和2005中创建C#的问题!~~
- 有.net 的技术QQ群共享几个吗???谢谢
- 给axWebBrowser控件传一段html代码,然后用它把网页显示出来?
- 代码
- if 能用,else if 就有bug了。。。为毛啊?
- 我在安装VISUAL.NET的时候,最后1分钟报错,装了几次都装不上去,HELP!!!
- 怎样让一个窗体固顶(独占打开)
<%@ Import Namespace="System.Data" %>
<html>
<script language = "C#" runat="server">
ICollection CreateDataSource()
{
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
for (int i = 0; i < 10; i++)
{
dr = dt.NewRow();
dr[0] = "Channels " + i.ToString();
dt.Rows.Add(dr);
}
DataView dv = new DataView(dt);
return dv;
}
ICollection CreateDataSource2(int i)
{
DataTable dt = new DataTable();
DataRow dr;
if(i<0) i = 0;
dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
for(int m=0;m<5;m++)
{
dr = dt.NewRow();
dr[0] = "Channel" + i.ToString() + "__Columns" + m.ToString();
dt.Rows.Add(dr);
}
DataView dv = new DataView(dt);
return dv;
} void Page_Load(Object sender, EventArgs e)
{
if (!IsPostBack)
{
DataList1.DataSource = CreateDataSource();
DataList1.DataBind(); DataList2.DataSource = CreateDataSource2(0);
DataList2.DataBind();
}
}
void DataList1_ItemCommand(Object sender, DataListCommandEventArgs e) {
DataList1.SelectedIndex = e.Item.ItemIndex; DataList2.DataSource = CreateDataSource2(e.Item.ItemIndex);
DataList2.DataBind();
}
</script>
<body>
<form runat=server> <h3>DataList Example</h3>
<asp:DataList id="DataList1" runat="server"
BorderColor="black"
CellPadding="3"
Font-Name="Verdana"
RepeatLayout="Table"
RepeatColumns="10"
GridLines="Both"
BorderWidth = 1
RepeatDirection="Horizontal"
Font-Size="8pt"
OnItemCommand="DataList1_ItemCommand"
>
<SelectedItemStyle Font-Bold="True" ForeColor="#F7F7F7" BackColor="#738A9C"></SelectedItemStyle> <HeaderStyle BackColor="#aaaadd">
</HeaderStyle> <AlternatingItemStyle BackColor="Gainsboro">
</AlternatingItemStyle> <HeaderTemplate> Channels </HeaderTemplate>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "StringValue") %>
<br>
<asp:LinkButton id="Select" runat="server" Text="Enter" CommandName="Select" />
</ItemTemplate>
</asp:DataList>
<p>
<hr noshade align="left" width="300px">
<asp:DataList id="DataList2" runat="server"
BorderColor="black"
CellPadding="3"
Font-Name="Verdana"
RepeatLayout="Table"
RepeatColumns="5"
GridLines="Both"
BorderWidth = 1
RepeatDirection="Horizontal"
Font-Size="8pt"> <HeaderStyle BackColor="#aaaadd">
</HeaderStyle> <AlternatingItemStyle BackColor="Gainsboro">
</AlternatingItemStyle> <HeaderTemplate> Columns </HeaderTemplate>
<ItemTemplate> <%# DataBinder.Eval(Container.DataItem, "StringValue") %> </ItemTemplate>
</asp:DataList> </form>
<br><a href="mailto:[email protected]">mailto:[email protected]</a><br>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>index</title>
<meta content="Microsoft Visual Studio 7.0" 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">
<STYLE type="text/css">TD {
FONT-SIZE: 9pt; LINE-HEIGHT: 15pt
}
A {
TEXT-DECORATION: none
}
A:link {
COLOR: #000000
}
A:visited {
COLOR: #000000
}
A:active {
COLOR: #000000
}
A:hover {
COLOR: #cc0000; TEXT-DECORATION: underline
}
.t {
BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid
}
</STYLE>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="index" method="post" runat="server">
<table cellSpacing="0" cellPadding="0" width="760" align="center" border="0">
<tr>
<td vAlign="top"><IMG height="18" src="images/ind_02.gif" width="760" useMap="#Map3Map2" border="0"></td>
</tr>
<tr height="87">
<td background="images/ind_03.gif" height="87"> </td>
</tr>
<tr vAlign="top">
<td>
<table cellSpacing="0" cellPadding="0" width="100%" border="0">
<tr>
<td width="23%"><IMG height="27" src="images/ind_04.gif" width="214" useMap="#Map" border="0"></td>
<td vAlign="top" width="77%" background="images/ind_05.gif">
<div align="right">| <a href="http://w315.cqcnc.com/" target="_blank">用户服务中心</a> | <a href="http://mail.cqcnc.com/" target="_blank">
免费邮箱</a> |<a href="http://www.cqnet.com.cn/" target="_blank"> 重庆网通</a> |</div>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td><IMG height="2" src="images/ind_24.gif" width="417"></td>
</tr>
<tr>
<td>
<TABLE cellSpacing="0" cellPadding="0" width="100%" border="0">
<TR vAlign="top" width="76%">
<TD><asp:datalist id="DataList1" runat="server" RepeatColumns="3">
<ItemTemplate>
<FONT face="宋体">
<TABLE id="Table1" cellSpacing="0" cellPadding="0" width="170" border="0">
<TR>
<TD background="images/185xt.gif" bgColor="#094b8c" height="25"><B><%# DataBinder.Eval(Container.DataItem, "name")%></B></TD>
</TR>
<TR>
<TD vAlign="top" background="images/185xbg.gif">
<TABLE id="Table2" cellSpacing="2" cellPadding="0" width="100%" align="center" border="0">
<TR>
<TD width="41%">
<DIV align="center"><IMG height="80" src="images/60x-1.gif" width="60"></DIV>
</TD>
<TD width="59%">
<TABLE id="Table3" cellSpacing="2" cellPadding="1" width="100%" align="center" background="images/textbg.gif" border="0">
<TR>
<TD height="3"></TD>
</TR>
<TR>
<TD><A href="http://cncxp.cqcnc.com/" target="_blank"><FONT color="#ff0000"><%# DataBinder.Eval(Container.DataItem, "name")%></FONT></A></TD>
</TR>
<TR>
<TD><A href="http://cq.mtvtop.net/"><%# DataBinder.Eval(Container.DataItem, "name")%></A></TD>
</TR>
<TR>
<TD><A href="http://kpworld.cqcnc.com/" target="_blank"><%# DataBinder.Eval(Container.DataItem,"name")%></A></TD>
----这种位置希望使用一个datalist绑定子关系表中对应的记录的某些字段-- </TR>
<TR>
<TD><A href="http://210.51.8.174/vrcity/cq_in.htm" target="_blank">宽带梦网</A></TD>
</TR>
<TR>
<TD><IMG height="10" src="images/arrow.gif" width="11" align="absMiddle">More</TD>
</TR>
<TR>
<TD></TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
</TD>
</TR>
<TR>
<TD vAlign="top"><IMG height="7" src="images/185xd.gif" width="180">
</TD>
</TR>
</TABLE>
</FONT>
</ItemTemplate>
</asp:datalist></TD>
</TR>
</TABLE>
</td>
</tr>
</table>
</form>
</body>
</HTML>
<asp:DataList id="dlChanel" ...>
<ItemTemplate>
<Asp:LinkButton id="lblChanelName" CommandName="<%#绑定到Chanel编号%>"... />
<asp:DataList id="dlLanmu" ...>
<ItemTemplate>
...
</ItemTemplate>
</asp:DataList>
</ItemTemplate>
</asp:DataList>在后台代码中:
private void ChanelBind()//Chanel数据绑定
{
...
}
设置对象dlChanel的事件ItemBound到下面的方法:
private void LanmuBind(object sender, ... e)//绑定相应Chanel的栏目,e的类型忘记了,系统会自动产生
{
DataList dlTemp=(DataList)e.Item.FindControl("dlLanmu");
//下面通过当前栏目ID绑定数据到dlLanmu
...
}
<script language="javascript" src="mainmenu.js"></script>
<asp:Repeater id="GeoMenuLayer" runat="server">
<ItemTemplate>
<div id='<%#"menulayer"+DataBinder.Eval(Container,"ItemIndex")+"Div"%>'>
<div id='<%#"iconlayer"+DataBinder.Eval(Container,"ItemIndex")+"Div"%>'>
<asp:DataList id="MenuLayerLMItem" runat="server">
<ItemTemplate>
<TABLE id="Table1" cellSpacing="0" cellPadding="0" width="100%" border="0">
<TR>
<TD height="8"></TD>
</TR>
<TR>
<TD vAlign="center" align="middle" height="32">
<img src='<%# this.ItemImageUrl(DataBinder.Eval(Container, "DataItem.项目ID").ToString()) %>' style="cursor:hand" onclick='javascript:frmMainHrefChange(<%#DataBinder.Eval(Container, "DataItem.项目ID").ToString().Substring(4,4)%>)'; Height="32px" Width="32px"></TD>
</TR>
<TR>
<TD height="8"></TD>
</TR>
<TR>
<TD vAlign="center" align="middle">
<a style="FONT-SIZE: 9pt; COLOR: blue" target="frmMain" href='<%#"./GotoPage.Aspx?id="+DataBinder.Eval(Container, "DataItem.项目ID").ToString().Substring(4,4)%>'>
<%# DataBinder.Eval(Container, "DataItem.项目名称").ToString().Trim() %>
</a>
</TD>
</TR>
<TR>
<TD height="8"></TD>
</TR>
</TABLE>
</ItemTemplate>
</asp:DataList>
</div>
<div id='<%#"uplayer"+DataBinder.Eval(Container,"ItemIndex")+"Div"%>'>
<img src='images/scrollup.gif' title='更多' width="16" height="16" onMouseDown="javascript:this.src='images/scrollup2.gif';menuscrollup()" onMouseUp="javascript:this.src='images/scrollup.gif';menuscrollstop()" onMouseOut="javascript:this.src='images/scrollup.gif';menuscrollstop()">
</div>
<div id='<%#"downlayer"+DataBinder.Eval(Container,"ItemIndex")+"Div"%>'>
<img src='images/scrolldown.gif' title='更多' width="16" height="16" onMouseDown="javascript:this.src='images/scrolldown2.gif';menuscrolldown()" onMouseUp="javascript:this.src='images/scrolldown.gif';menuscrollstop()" onMouseOut="javascript:this.src='images/scrolldown.gif';menuscrollstop()">
</div>
</div>
</ItemTemplate>
</asp:Repeater>
<script language="javascript">
function frmMainHrefChange(obj)
{
var strID=obj+"";
switch(strID.length)
{
case 1:
strID="000"+obj;
break;
case 2:
strID="00"+obj;
break;
case 3:
strID="0"+obj;
break;
default:
break;
}
var hrefString="./GotoPage.Aspx?id="+strID;
frmMain.location=hrefString;
}
</script>
{
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls; /// <summary>
/// menuLayer 的摘要说明。
/// </summary>
public abstract class menuLayer : System.Web.UI.UserControl
{
protected System.Web.UI.WebControls.Repeater GeoMenuLayer;
private string strDBName="GDEESystem";
private string strUserID="SuperAdmin"; private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
DataSet ds=GeoClass.Function.GetDataSet("select * from GDEE_LM order by 栏目ID",new GeoClass.SqlParameterArrayList(),this.strDBName);
int lmCount=ds.Tables[0].Rows.Count;
Response.Write("<script language=javascript>\rintMenuNum="+lmCount+";\robjMenuParentID='"+this.Parent.ClientID+"';\r"+@"</script>"+"\r");
ds.Tables[0].Rows[0]["栏目名称"]="快捷方式";
this.GeoMenuLayer.DataSource=ds.Tables[0];
this.GeoMenuLayer.DataBind();
ds.Dispose();
} #region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// 设计器支持所需的方法 - 不要使用
/// 代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.GeoMenuLayer.ItemDataBound += new System.Web.UI.WebControls.RepeaterItemEventHandler(this.GeoMenuLayer_ItemDataBound);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void GeoMenuLayer_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
DataList dlTemp=(DataList)(e.Item.FindControl("MenuLayerLMItem"));
string strLMID=((DataRowView)(e.Item.DataItem))["栏目ID"].ToString().Trim();
string strQuery="select GDEE_XM.项目ID,GDEE_XM.项目文件,GDEE_XM.项目名称 from GDEE_XM Inner Join GDEE_Right ON (GDEE_XM.项目ID=GDEE_Right.项目ID) where GDEE_Right.用户ID='"+this.strUserID+"' And GDEE_Right.访问权限>0 And GDEE_XM.所属栏目='"+strLMID+"'";
if(strLMID=="LM00")
strQuery="select GDEE_XM.项目ID,GDEE_XM.项目文件,GDEE_XM.项目名称 from GDEE_XM Inner Join GDEE_Right ON (GDEE_XM.项目ID=GDEE_Right.项目ID) where GDEE_Right.用户ID='"+this.strUserID+"' And GDEE_Right.快捷方式>0 And GDEE_Right.访问权限>0";
DataSet ds=GeoClass.Function.GetDataSet(strQuery,new GeoClass.SqlParameterArrayList(),this.strDBName);
dlTemp.DataSource=ds.Tables[0];
dlTemp.DataBind();
ds.Dispose();
}
protected string ItemImageUrl(string strItemID)
{
return @"./../Image.Aspx?DataBase="+this.strDBName+"&Table=GDEE_XM&ImageField=项目图标&IDField=项目ID&IDValue="+strItemID;
}
}
}
{
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls; /// <summary>
/// menuLayer 的摘要说明。
/// </summary>
public abstract class menuLayer : System.Web.UI.UserControl
{
protected System.Web.UI.WebControls.Repeater GeoMenuLayer;
private string strDBName="GDEESystem";
private string strUserID="SuperAdmin"; private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
DataSet ds=GeoClass.Function.GetDataSet("select * from GDEE_LM order by 栏目ID",new GeoClass.SqlParameterArrayList(),this.strDBName);
int lmCount=ds.Tables[0].Rows.Count;
Response.Write("<script language=javascript>\rintMenuNum="+lmCount+";\robjMenuParentID='"+this.Parent.ClientID+"';\r"+@"</script>"+"\r");
ds.Tables[0].Rows[0]["栏目名称"]="快捷方式";
this.GeoMenuLayer.DataSource=ds.Tables[0];
this.GeoMenuLayer.DataBind();
ds.Dispose();
} #region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// 设计器支持所需的方法 - 不要使用
/// 代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.GeoMenuLayer.ItemDataBound += new System.Web.UI.WebControls.RepeaterItemEventHandler(this.GeoMenuLayer_ItemDataBound);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void GeoMenuLayer_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
DataList dlTemp=(DataList)(e.Item.FindControl("MenuLayerLMItem"));
string strLMID=((DataRowView)(e.Item.DataItem))["栏目ID"].ToString().Trim();
string strQuery="select GDEE_XM.项目ID,GDEE_XM.项目文件,GDEE_XM.项目名称 from GDEE_XM Inner Join GDEE_Right ON (GDEE_XM.项目ID=GDEE_Right.项目ID) where GDEE_Right.用户ID='"+this.strUserID+"' And GDEE_Right.访问权限>0 And GDEE_XM.所属栏目='"+strLMID+"'";
if(strLMID=="LM00")
strQuery="select GDEE_XM.项目ID,GDEE_XM.项目文件,GDEE_XM.项目名称 from GDEE_XM Inner Join GDEE_Right ON (GDEE_XM.项目ID=GDEE_Right.项目ID) where GDEE_Right.用户ID='"+this.strUserID+"' And GDEE_Right.快捷方式>0 And GDEE_Right.访问权限>0";
DataSet ds=GeoClass.Function.GetDataSet(strQuery,new GeoClass.SqlParameterArrayList(),this.strDBName);
dlTemp.DataSource=ds.Tables[0];
dlTemp.DataBind();
ds.Dispose();
}
protected string ItemImageUrl(string strItemID)
{
return @"./../Image.Aspx?DataBase="+this.strDBName+"&Table=GDEE_XM&ImageField=项目图标&IDField=项目ID&IDValue="+strItemID;
}
}
}
上面的代码使用了REPEATER,同DATALIST类似。2——
这个代码中,我在对LM(相当于你的CHANEL)菜单进行绑定后,读取LM的数量,然后通过LM的Items[i]来FindControl(XM),这里XM相当于你的lanmu,XM是你在CHANEL中放置的DATALIST的ID,然后再绑定数据。
你可以把这部分代码放到CHANEL的ITEMDATABOUND事件中进行处理,这样就不用获取CHANEL的数量了。