因為標籤項目跟子項目都滿多的,這樣對使用者來說不太方便,所以找了方法鎖住使用者選擇的該標籤。
原本的javascript做在前台,但有些人會認為前後台要分清楚,所以這次也做了javascript在後台的版本。
邏輯很簡單,就是把使用者點選的標籤存起來,isPostback之後再讀出來跳到那一個標籤就好。
邏輯很簡單,就是把使用者點選的標籤存起來,isPostback之後再讀出來跳到那一個標籤就好。
javascript在前台版:
html的部分
html的部分
<head runat="server">
<title></title>
<link type="text/css" href="gis.css" rel="stylesheet" />
<link type="text/css" href="css/custom-theme/jquery-ui-1.8.23.custom.css" rel="stylesheet" />
<script type="text/javascript" src="js/jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.23.custom.min.js"></script>
<style type="text/css">
#tabs
{
font-family: "Trebuchet MS" , Arial, Helvetica, sans-serif;
font-size: 0.8em;
margin: 10px;
}
#dialog_link
{
padding: .4em 1em .4em 20px;
text-decoration: none;
position: relative;
}
ul#icons li
{
margin: 2px;
position: relative;
padding: 4px 0;
cursor: pointer;
float: left;
list-style: none;
}
</style>
</head>
<style></style>的部分是美觀用的,拿掉不影響功能。
這邊是tabs的部分,原本有很多個礙於空間跟每個標籤只留一個。
接著是javascript做在後台的版本,上面的第一段和第二段碼完全一樣,唯一的差別是html末端的那段要全部砍掉,改成在後台的部分放上這個涵式:
上面的涵式在Page_Load呼叫
成品如圖:
這邊是tabs的部分,原本有很多個礙於空間跟每個標籤只留一個。
<div>
<!-- Tabs -->
<div id="tabs">
<ul>
<li><a href="#tabs-1">現況資料</a></li>
<li><a href="#tabs-2">許可資料</a></li>
<li><a href="#tabs-3">管制資料</a></li>
<li><a href="#tabs-4">申報</a></li>
<li><a href="#tabs-5">檢測資料</a></li>
<li><a href="#tabs-6">更新擴充資料</a></li>
<li><a href="#tabs-7">VOC</a></li>
</ul>
<div id="tabs-1">
<asp:ImageButton ID="ImgBtnControl" runat="server" ImageUrl="~/images/sub1-7.png"
OnClick="ImgBtnControl_Click" />
</div>
<div id="tabs-2">
<asp:ImageButton ID="ImgBtnLicense" runat="server" ImageUrl="~/images/sub1-1.png"
OnClick="ImgBtnLicense_Click" />
</div>
<div id="tabs-3">
<asp:ImageButton ID="ImgBtnRelief" runat="server" ImageUrl="~/images/subBtn3.png"
OnClick="ImgBtnRelief_Click" />
</div>
<div id="tabs-4">
<asp:ImageButton ID="ImgBtnApplySeason" runat="server" ImageUrl="~/images/sub2-8.png"
OnClick="ImgBtnApplySeason_Click" />
</div>
<div id="tabs-5">
<asp:ImageButton ID="ImgBtnRegularStatistic" runat="server" ImageUrl="~/images/sub4-2.png"
OnClick="ImgBtnRegularStatistic_Click" />
</div>
<div id="tabs-6">
<asp:ImageButton ID="ImgBtnCheckPipe" runat="server" ImageUrl="~/images/sub3-2.png"
OnClick="ImgBtnCheckPipe_Click" />
</div>
<div id="tabs-7">
<asp:ImageButton ID="ImgBtnVOCWaste" runat="server" ImageUrl="~/images/sub5-6.png"
OnClick="ImgBtnVOCWaste_Click" />
</div>
</div>
</div>
最後要在html末端(body之後)加上這段<script type="text/javascript">
$(function () {
$(document).ready(function () {
var tabIndex = $("#<%=hidCurrentTab.ClientID %>").val();
$("#tabs").tabs({ select: function (event, ui) {
$("#<%=hidCurrentTab.ClientID%>").val(ui.index);
}
, selected: tabIndex
});
});
$('#dialog_link, ul#icons li').hover(
function () { $(this).addClass('ui-state-hover'); },
function () { $(this).removeClass('ui-state-hover'); });
})
</script>
這樣就完成了!!接著是javascript做在後台的版本,上面的第一段和第二段碼完全一樣,唯一的差別是html末端的那段要全部砍掉,改成在後台的部分放上這個涵式:
private void registerScriptTabs()
{
string scriptStr;
scriptStr = " $(function () {// Tabs\n";
scriptStr += " $(document).ready(function () {\n";
scriptStr += " var tabIndex = $(\"#" + hidCurrentTab.ClientID + "\").val();\n";
scriptStr += " $(\"#tabs\").tabs({ select: function (event, ui) {\n";
scriptStr += " $(\"#" + hidCurrentTab.ClientID + "\").val(ui.index);\n";
scriptStr += " }\n";
scriptStr += " , selected: tabIndex\n";
scriptStr += " });\n";
scriptStr += " });\n";
scriptStr += " //hover states on the static widgets\n";
scriptStr += " $('#dialog_link, ul#icons li').hover(\n";
scriptStr += " function () { $(this).addClass('ui-state-hover'); },\n";
scriptStr += " function () { $(this).removeClass('ui-state-hover'); }\n";
scriptStr += " );\n";
scriptStr += " });\n";
this.ClientScript.RegisterStartupScript(this.GetType(), "scriptTabs", scriptStr, true);
}
其實就只是一模一樣的東西改在後台寫而已,有些人覺得前後要分清楚所以有兩種做法。(我自己是第二種,公司規定)上面的涵式在Page_Load呼叫
protected void Page_Load(object sender, EventArgs e)
{
registerScriptTabs();
if (!IsPostBack)
{
ImgBtnBasic_Click(null, null);
}
}
這樣就全部完成了!成品如圖:
沒有留言:
張貼留言