ASP。NET中怎么动态添加栏目?(高分) 比如首页中有4个栏目:A,B,C,D分别下面有各自的新闻我想在后台控制前台,添加一个E栏目出来,E栏目下也能添加自己的新闻信息等等当然不能破坏网页格式了,请问该怎么实现?或者有具体的代码更好,油巷:[email protected]另行追加100分! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我也想啊,做控件什么的都不是难题,难就难在怎么样自动的添加到那个位置上啊?网页肯定是我用table来定位的啊,2行2列的table,现在table里有4个栏目了,我该怎么让这个新添加的栏目放到3行1列上?再添加一个就自动放到3行2列上?等等还希望高手赐教啊! 一个房型一个tabale 然后房间一个td 楼上说的是已经定制好有多少数据了吧?我要的是N行2列的table,动态添加栏目,添加多少不限制,就按照N行2列的样子一直排下去,我从后台添加,然后插到数据库,前台再读数据,然后把我添加的栏目显示出来,就是动态添加,不知道该怎么就能添加上去啊~~~请教啊!看下楼主代码,希望有启发,问题解决再追加100分 <td valign="top"> <table border="0" cellpadding="0" cellspacing="0" > <tr> <td valign="top" align="center"> <asp:UpdatePanel ID="up" runat="server"> <ContentTemplate> <asp:Label ID="Label1" runat="server"></asp:Label> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" /> </Triggers> </asp:UpdatePanel> </td> </tr> </table> <asp:Timer ID="Timer1" runat="server" Interval="6000000" OnTick="Timer1_Tick1"> </asp:Timer> </td> #region MyRegion private StringBuilder CreateTable() { int HotelID = int.Parse(Session["HotelID"].ToString()); DFB.HotelMember.HotelRoom room = new DFB.HotelMember.HotelRoom(); DataTable dtTypeCount = room.SelectHotelRoomCount(HotelID); StringBuilder sb = new StringBuilder(); sb.Append("<table width='624' border='0' cellspacing='0' cellpadding='0'>"); sb.Append("<tr><td height='30' background='images/hotel_top.gif' align='left'><table width='124' height='22' border='0' cellpadding='0' cellspacing='0' class='left_10px' id='__01'>"); sb.Append("<tr><td><img src='images/hotel_top_01.gif' width='23' height='22'/></td><td width='78' height='22' background='images/hotel_top_02.gif' style='color:White'>房 态</td>"); sb.Append("<td><img src='images/hotel_top_04.gif' width='23' height='22'/></td></tr></table></td></tr>"); sb.Append("<td class='border_hong'>"); for (int roomType = 0; roomType < dtTypeCount.Rows.Count; roomType++) //房型数量 { #region //通过房型编号查询今日的此房型的订房数量 DFB.HotelMember.OrderDetailDo order = new DFB.HotelMember.OrderDetailDo(); DataTable OrderCount = order.SelectOrderStateIsDestine(Convert.ToInt32(dtTypeCount.Rows[roomType]["RoomTypeId"])); //房型状态和订单数量 int SumRooms = Convert.ToInt32(dtTypeCount.Rows[roomType][2]); int OrderRooms = 0; for (int i = 0; i < OrderCount.Rows.Count; i++) { OrderRooms += Convert.ToInt32(OrderCount.Rows[i][1]); } sb.Append("<table width='600' border='1' align='center' cellpadding='0' cellspacing='0' bordercolorlight='#BFBFBF' bordercolordark='#FFFFFF' class='font_fan'>"); sb.Append("<tr><td colspan='10' bgcolor='#F2F2F2' class='font_fan_1'>" + dtTypeCount.Rows[roomType][1].ToString() + "<span style='margin-right=10px'>(共:" + dtTypeCount.Rows[roomType][2].ToString() + "间 已订:" + OrderRooms + "间)</span></td></tr>"); sb.Append("<height='34'>"); if (OrderCount.Rows.Count > 0) { for (int row = 0; row < OrderCount.Rows.Count; row++) { int status = Convert.ToInt32(OrderCount.Rows[row]["OrderState"]); int Cells = Convert.ToInt32(OrderCount.Rows[row][1]); switch (status) { case 1: AppendHtmlCode("red", sb, Cells, status); break; case 2: AppendHtmlCode("blue", sb, Cells, status); break; case 3: AppendHtmlCode("yellow", sb, Cells, status); break; case 4: AppendHtmlCode("black", sb, Cells, status); break; case 5: AppendHtmlCode("green", sb, Cells, status); break; case 6: AppendHtmlCode("gray", sb, Cells, status); break; case 7: AppendHtmlCode("olive", sb, Cells, status); break; case 8: AppendHtmlCode("aqua", sb, Cells, status); break; case 9: AppendHtmlCode("lime", sb, Cells, status); break; case 10: AppendHtmlCode("navy", sb, Cells, status); break; } } } #endregion for (int cell = 0; cell < SumRooms - OrderRooms; cell++) { sb.Append("<td width='60'><img src='images/zhou.gif' /></td>"); count++; if (count % 10 == 0) { sb.Append("</tr><tr height='34'>"); } } count = 0; } sb.Append("</table></td></tr></table>"); return sb; } #endregion public void AppendHtmlCode(string color, StringBuilder sb,int Cells,int status) { for (int i = 0; i < Cells; i++) { sb.Append("<td width='60'><img src='images/man.gif' /></td>"); count++; if (count % 10 == 0) { sb.Append("</tr><tr height='34'>"); } } } public void WriteScript(string sb) { Label1.Text = sb.ToString(); #region MyRegion //ClientScriptManager clientJS = Page.ClientScript; //StringBuilder cstext2 = new StringBuilder(); //if (!clientJS.IsClientScriptBlockRegistered(this.GetType(), "BlockClickScript")) //{ // cstext2.Append("<script type=text/javascript> function DoClick() {"); // cstext2.Append("document.getElementById('up').innerHTML='" + sb + "'}"); // cstext2.Append("</script>"); // clientJS.RegisterClientScriptBlock(this.GetType(), "BlockClickScript", cstext2.ToString(), false); //} #endregion } protected void Timer1_Tick1(object sender, EventArgs e) { StringBuilder sb = CreateTable(); Label1.Text=sb.ToString(); } 你先不要在页面上固定table,你在后台控制table的大小,你从数据库读出来的栏目在循环放在这个table里,然后在显示在页面上如 :定义一个public的字符串str=""str="<table>"for(int i=0; i<dt.rows.count;i++)//dt是一个datatable你读的数据{str+="<tr><td>"+dt.rows[i]["数据字段"].ToString()+"</td><tr>"}str+="</table>"//具体样式你自己控制在前台页面上就用<%=str%>把table放在想方的位置//这是一个笨办法,希望能给你一些帮助 www.ebookit.cn这个网页就是动态添加栏目的,先看着,不懂联系站长! 程序运行过长时出现“正在中止线程” 怎么使用弹出是否对话框,判断执行哪个语句 关于ListBox VS2005在母版下使用Atlas不能实现局部刷新吗? 我打算学asp.net 用什么用什么工具开发最好?请大家给我推荐下 这是怎么了呢? 从UltraWebGrid中导出为Excel表碰到的问题!!急,在线等!!! 刚写的代码可是总是运行不对 cuteeditor默认根目录修改? 我刚下载了一个Crystal Reports水晶报表设计与开发实务的源代码,推荐给大家! asp.net中如何讲sql数据库中的数据写入word? 100分求救,关于后台注册的确认对话框。
网页肯定是我用table来定位的啊,2行2列的table,现在table里有4个栏目了,我该怎么让这个新添加的栏目放到3行1列上?再添加一个就自动放到3行2列上?等等还希望高手赐教啊!
我要的是N行2列的table,动态添加栏目,添加多少不限制,就按照N行2列的样子一直排下去,我从后台添加,然后插到数据库,前台再读数据,然后把我添加的栏目显示出来,就是动态添加,不知道该怎么就能添加上去啊~~~请教啊!
看下楼主代码,希望有启发,问题解决再追加100分
<table border="0" cellpadding="0" cellspacing="0" >
<tr>
<td valign="top" align="center">
<asp:UpdatePanel ID="up" runat="server">
<ContentTemplate>
<asp:Label ID="Label1" runat="server"></asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
</Triggers>
</asp:UpdatePanel>
</td>
</tr>
</table>
<asp:Timer ID="Timer1" runat="server" Interval="6000000" OnTick="Timer1_Tick1">
</asp:Timer>
</td>
private StringBuilder CreateTable()
{
int HotelID = int.Parse(Session["HotelID"].ToString());
DFB.HotelMember.HotelRoom room = new DFB.HotelMember.HotelRoom();
DataTable dtTypeCount = room.SelectHotelRoomCount(HotelID);
StringBuilder sb = new StringBuilder();
sb.Append("<table width='624' border='0' cellspacing='0' cellpadding='0'>");
sb.Append("<tr><td height='30' background='images/hotel_top.gif' align='left'><table width='124' height='22' border='0' cellpadding='0' cellspacing='0' class='left_10px' id='__01'>");
sb.Append("<tr><td><img src='images/hotel_top_01.gif' width='23' height='22'/></td><td width='78' height='22' background='images/hotel_top_02.gif' style='color:White'>房 态</td>");
sb.Append("<td><img src='images/hotel_top_04.gif' width='23' height='22'/></td></tr></table></td></tr>");
sb.Append("<td class='border_hong'>");
for (int roomType = 0; roomType < dtTypeCount.Rows.Count; roomType++) //房型数量
{
#region
//通过房型编号查询今日的此房型的订房数量
DFB.HotelMember.OrderDetailDo order = new DFB.HotelMember.OrderDetailDo();
DataTable OrderCount = order.SelectOrderStateIsDestine(Convert.ToInt32(dtTypeCount.Rows[roomType]["RoomTypeId"])); //房型状态和订单数量
int SumRooms = Convert.ToInt32(dtTypeCount.Rows[roomType][2]);
int OrderRooms = 0;
for (int i = 0; i < OrderCount.Rows.Count; i++)
{
OrderRooms += Convert.ToInt32(OrderCount.Rows[i][1]);
}
sb.Append("<table width='600' border='1' align='center' cellpadding='0' cellspacing='0' bordercolorlight='#BFBFBF' bordercolordark='#FFFFFF' class='font_fan'>");
sb.Append("<tr><td colspan='10' bgcolor='#F2F2F2' class='font_fan_1'>" + dtTypeCount.Rows[roomType][1].ToString() + "<span style='margin-right=10px'>(共:" + dtTypeCount.Rows[roomType][2].ToString() + "间 已订:" + OrderRooms + "间)</span></td></tr>");
sb.Append("<height='34'>");
if (OrderCount.Rows.Count > 0)
{
for (int row = 0; row < OrderCount.Rows.Count; row++)
{
int status = Convert.ToInt32(OrderCount.Rows[row]["OrderState"]);
int Cells = Convert.ToInt32(OrderCount.Rows[row][1]);
switch (status)
{
case 1:
AppendHtmlCode("red", sb, Cells, status);
break;
case 2:
AppendHtmlCode("blue", sb, Cells, status);
break;
case 3:
AppendHtmlCode("yellow", sb, Cells, status);
break;
case 4:
AppendHtmlCode("black", sb, Cells, status);
break;
case 5:
AppendHtmlCode("green", sb, Cells, status);
break;
case 6:
AppendHtmlCode("gray", sb, Cells, status);
break;
case 7:
AppendHtmlCode("olive", sb, Cells, status);
break;
case 8:
AppendHtmlCode("aqua", sb, Cells, status);
break;
case 9:
AppendHtmlCode("lime", sb, Cells, status);
break;
case 10:
AppendHtmlCode("navy", sb, Cells, status);
break;
}
}
}
#endregion
for (int cell = 0; cell < SumRooms - OrderRooms; cell++)
{
sb.Append("<td width='60'><img src='images/zhou.gif' /></td>");
count++;
if (count % 10 == 0)
{
sb.Append("</tr><tr height='34'>");
}
}
count = 0;
}
sb.Append("</table></td></tr></table>");
return sb;
}
#endregion public void AppendHtmlCode(string color, StringBuilder sb,int Cells,int status)
{
for (int i = 0; i < Cells; i++)
{
sb.Append("<td width='60'><img src='images/man.gif' /></td>");
count++;
if (count % 10 == 0)
{
sb.Append("</tr><tr height='34'>");
}
}
}
public void WriteScript(string sb)
{
Label1.Text = sb.ToString(); #region MyRegion
//ClientScriptManager clientJS = Page.ClientScript; //StringBuilder cstext2 = new StringBuilder();
//if (!clientJS.IsClientScriptBlockRegistered(this.GetType(), "BlockClickScript"))
//{
// cstext2.Append("<script type=text/javascript> function DoClick() {");
// cstext2.Append("document.getElementById('up').innerHTML='" + sb + "'}");
// cstext2.Append("</script>");
// clientJS.RegisterClientScriptBlock(this.GetType(), "BlockClickScript", cstext2.ToString(), false);
//}
#endregion
}
protected void Timer1_Tick1(object sender, EventArgs e)
{
StringBuilder sb = CreateTable();
Label1.Text=sb.ToString();
}
如 :定义一个public的字符串str=""
str="<table>"
for(int i=0; i<dt.rows.count;i++)//dt是一个datatable你读的数据
{
str+="<tr><td>"+dt.rows[i]["数据字段"].ToString()+"</td><tr>"
}
str+="</table>"
//具体样式你自己控制
在前台页面上就用<%=str%>把table放在想方的位置
//这是一个笨办法,希望能给你一些帮助