我已经用javascript+div做好了一个选项卡!
项目A 项目B 项目C
内容A 内容B 内容C
如果点选项卡A只显示A的内容,如果点选项卡B只显示B的内容,一次类推!这个功能我已经做好了,效果也出来了!
现在的问题是我想把服务器控件,像GridView拖到A,B,C各拖一个控件到内容中!实现点击各个选项卡,就显示各个选项卡内容中的GridView的内容!
就是不显示GridView的内容!希望大家帮小弟提个思路!
项目A 项目B 项目C
内容A 内容B 内容C
如果点选项卡A只显示A的内容,如果点选项卡B只显示B的内容,一次类推!这个功能我已经做好了,效果也出来了!
现在的问题是我想把服务器控件,像GridView拖到A,B,C各拖一个控件到内容中!实现点击各个选项卡,就显示各个选项卡内容中的GridView的内容!
就是不显示GridView的内容!希望大家帮小弟提个思路!
lz到底啥意思?假设楼主意思是,点tabA,就显示GVa,tabB就显示GVb。那你把gv拖进这些div里就好了呀- -||有啥困难?每个tab都设置别的div的style.display=none,自己对应的div的display=block.
点A “内容A”显示 "内容A"是我在div中做的标记,是文字 但就GridView不显示!我也是很纳闷!因为 “内容A”标记都显示出来了! 放在的GridView也应该显示出来啊!
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Tab.aspx.cs" Inherits="Tab" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>选项卡切换块</title>
<script type="text/javascript">
function Click(x){
var grid = x.parentNode.getElementsByTagName("td");
var ct = document.getElementsByTagName("div");
for(i=0;i<grid.length;i++){
if(x==grid[i]){
grid[i].className = "down";
ct[i].className = "dis";
}else{
grid[i].className = "up";
ct[i].className = "undis";
}
}
}
</script>
<style type="text/css">
a{display:block;
width:100%;
height:100%;
text-decoration:none;
text-align:center;
outline:none;
color:#333;
font-weight:bold;}
a:visited{color:#333;}
.down{background:#fff;}
.up{background:#333;}
.up a{color:#fff;}
.dis{display:block;}
.undis{display:none;}
</style>
</head>
<body>
<form id="form1" runat="server">
<table width="300" align="center" cellpadding="0" cellspacing="1">
<tr>
<td width="100" onclick="Click(this);" class="down" style="height: 6px"><a href="#" hidefocus="true">项目A</a></td>
<td width="100" onclick="Click(this);" class="up" style="height: 6px"><a href="#" hidefocus="true">项目B</a></td>
<td width="100" onclick="Click(this);" class="up" style="height: 6px"><a href="#" hidefocus="true">项目C</a></td>
</tr>
</table>
<div class="dis">
<table width="300" height="150" align="center" cellpadding="0" cellspacing="0" >
<tr>
<td>内容块A<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333"
GridLines="None" Width="299px">
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
</td>
</tr>
</table>
</div>
<div class="undis">
<table width="300" height="150" align="center" cellpadding="0" cellspacing="0" >
<tr>
<td>内容块B<asp:GridView ID="GridView2" runat="server" CellPadding="4" ForeColor="#333333"
GridLines="None" Width="303px">
<FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#E3EAEB" />
<EditRowStyle BackColor="#7C6F57" />
<SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
</td>
</tr>
</table>
</div>
<div class="undis">
<table width="300" height="150" align="center" cellpadding="0" cellspacing="0">
<tr>
<td>内容块C<asp:GridView ID="GridView3" runat="server" CellPadding="4" ForeColor="#333333"
GridLines="None" Width="300px">
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#EFF3FB" />
<EditRowStyle BackColor="#2461BF" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
MenuItem mi2 = new MenuItem();
MenuItem mi3 = new MenuItem();
mi1.Text = "aa";
mi2.Text = "bb";
mi3.Text = "cc";
mi2.ChildItems.Add(mi3);
mi1.ChildItems.Add(mi2);
Menu1.Items.Add(mi1);
其中mi1是一级菜单项,mi2是二级菜单项,mi3是三级菜单项。
/// <summary>
/// 加载Menu
/// </summary>
/// <param name="sortId">选择过滤条件</param>
/// <param name="flag">菜单级别</param>
public void addMenu(int sortId, MenuItem flag)
{
//绑定ds到DataView
DataView dvMenu = new DataView(ds.Tables[0]);
//过滤某次加载的菜单项
dvMenu.RowFilter = "sort_sort1Id = " + sortId;
//循环加载
foreach (DataRowView Row in dvMenu)
{
MenuItem m1 = new MenuItem();
//一级菜单绑定
if (flag == null)
{
m1.Text = Row["sortName"].ToString();
Menu1.Items.Add(m1);
//递归调用
addMenu(Int32.Parse(Row["sortId"].ToString()), m1);
}
//二级菜单绑定
else
{
MenuItem m2 = new MenuItem();
m2.Text = Row["sortName"].ToString();
m2.NavigateUrl = "sort.aspx?sortId=" + Row["sortId"].ToString();
//绑定二级菜单到某父菜单
flag.ChildItems.Add(m2);
//递归调用
addMenu(Int32.Parse(Row["sortId"].ToString()), m2);
} }
}
{
MenuItem mitem = null;
DB db = new DB();
DataSet ds = db.GetDataSet(sql, "table1");
DataTable dTable = ds.Tables[0];
DataRow[] drow = dTable.Select(" parentId='" + mainMenu + "'");
foreach (DataRow dr in drow)
{
mitem = new MenuItem();
mitem.Text = dr["modulName"].ToString();
mitem.Value = dr["modulId"].ToString();
mitem.NavigateUrl = "Default.aspx";
if (menu == null)
{
mn.Items.Add(mitem);
}
else
{
menu.ChildItems.Add(mitem);
}
DataSet dst = db.GetDataSet(sql, "table2");
DataTable dtb = dst.Tables[0];
DataRow[] dar = dtb.Select(" parentId='" + mitem.Value + "'");
mainMenu = mitem.Value;
BindMenu(Menu1, mitem, mainMenu, sql);
}
}
你应该给各个div分配id,取div的时候根据id来取。
楼主,你没调试吗,grid的值是空的
var ct = document.getElementsByTagName("div");
alert(ct.length)//7
function Click(o, id){
var obj = document.getElementById(id);
var arr = obj.parentNode.getElementsByTagName("div");
for(var i = 0; i < arr.length; i++){
arr[i].style.display = arr[i] != obj ? "none" : "";
} o.className = o.className == "down" ? "up" : "down";
}
</script>
<table width="300" align="center" cellpadding="0" cellspacing="1">
<tr>
<td width="100" onclick="Click(this, 'a1');" class="down" style="height: 6px"><a href="#" hidefocus="true">项目A</a></td>
<td width="100" onclick="Click(this, 'a2');" class="up" style="height: 6px"><a href="#" hidefocus="true">项目B</a></td>
<td width="100" onclick="Click(this, 'a3');" class="up" style="height: 6px"><a href="#" hidefocus="true">项目C</a></td>
</tr>
</table>
<div>
<div id="a1" style="background-color: yellow;">
这里加GridView1
</div>
<div id="a2" style="background-color: blue; display: none;">
这里加GridView2
</div>
<div id="a3" style="background-color: red; display: none;">
这里加GridView3
</div>
</div>
第一次加载时候,可以显示A选项A中GridView,如果点B,C不显示B,C中的GridView。再回去点A,A中的GridView也不现实!
是不是我的数据源帮定有问题,我把三个GridView绑定都写在Page_Load()中了public partial class Tab : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindTab();
} }
public void BindTab()
{
string strSql = "select ID,strFileName from FileInfo";
this.GridView1.DataSource = new DB().runSqlGetTable(strSql);
this.GridView1.DataBind();
this.GridView2.DataSource = new DB().runSqlGetTable(strSql);
this.GridView2.DataBind();
this.GridView3.DataSource = new DB().runSqlGetTable(strSql);
this.GridView3.DataBind();
}
}
这样写行吗?
难道不能把三个GridView绑定都写在Page_Load()中?知道的请麻烦解答下!
例如 6个选项卡 div1,div2,div3...Repeater生成 _div1,_div2,_div3... 根据选项卡的ID,显示相应的DIV,,
和xie_yanke 的肯定有区别
var ct = document.getElementsByTagName("div");
for(i=0;i<grid.length;i++){
if(x==grid[i]){
grid[i].className = "down";
ct[i].className = "dis";
}else{
grid[i].className = "up";
ct[i].className = "undis";
}
}
没写对
gridview最后出来也是div,你的ct[i] 怎么能够用和 grid变量 一样的下标呢
第二个div是 gridview1的那个div,不是你想的 “<div class="undis">” 那个!!
td {
font-size: 12px;
color: #000000;
line-height: 150%;
}
.sec1 {
background-color: #EEEEEE;
cursor: hand;
color: #000000;
border-left: 1px solid #FFFFFF;
border-top: 1px solid #FFFFFF;
border-right: 1px solid gray;
border-bottom: 1px solid #FFFFFF
}
.sec2 {
background-color: #D4D0C8;
cursor: hand;
color: #000000;
border-left: 1px solid #FFFFFF;
border-top: 1px solid #FFFFFF;
border-right: 1px solid gray;
font-weight: bold;
}
.main_tab {
background-color: #D4D0C8;
color: #000000;
border-left:1px solid #FFFFFF;
border-right: 1px solid gray;
border-bottom: 1px solid gray;
}
</style>
<script language=javascript>
function secBoard(n)
{
for(i=0;i<secTable.cells.length;i++)
secTable.cells[i].className="sec1";
secTable.cells[n].className="sec2";
for(i=0;i<mainTable.tBodies.length;i++)
mainTable.tBodies[i].style.display="none";
mainTable.tBodies[n].style.display="block";
}
</script>
<table border=0 cellspacing=0 cellpadding=0 width=549 id=secTable>
<tr height=20 align=center>
<td class=sec2 width=10% onclick="secBoard(0)">关于TBODY标记</td>
<td class=sec1 width=10% onclick="secBoard(1)">关于cells集合</td>
<td class=sec1 width=10% onclick="secBoard(2)">关于tBodies集合</td>
<td class=sec1 width=10% onclick="secBoard(3)">关于display属性</td>
</tr>
</table>
<table border=0 cellspacing=0 cellpadding=0 width=549 height=240 id=mainTable class=main_tab>
<tbody style="display:block;">
<tr>
<td align=center valign=top> <br>
<br>
这里填加内容,略去。1 </td>
</tr>
</tbody> <tbody style="display:none;">
<tr>
<td align=center valign=top> <br>
<br>
这里填加内容,略去。2 </td>
</tr>
</tbody> <tbody style="display:none;">
<tr>
<td align=center valign=top> <br>
<br>
这里填加内容,略去。3 </td>
</tr>
</tbody> <tbody style="display:none;">
<tr>
<td align=center valign=top> <br>
<br>
这里填加内容,略去。4 </td>
</tr>
</tbody>
</table> *****************************************************************************
ㄗs:
当你说出了你想说的,做了你想做的之后,你会发现,天是那么蓝,自己是那么可爱。不是因为你得到了你想得到的,而是因为你是在为自己而活着。
*****************************************************************************
ㄗs:
当你说出了你想说的,做了你想做的之后,你会发现,天是那么蓝,自己是那么可爱。不是因为你得到了你想得到的,而是因为你是在为自己而活着。
还有你的那句话
“当你说出了你想说的,做了你想做的之后,你会发现,天是那么蓝,自己是那么可爱。不是因为你得到了你想得到的,而是因为你是在为自己而活着。”
不错!