asp+中文教程(四)-- 服務器端控制(二)
2024-05-04 11:06:26
供稿:網友
8、 dropdownlist : 單選下拉框,你有兩種方法可以增加下拉框中的選擇項,一種和傳統的select一樣,把option項列出來,象下面這樣:
<asp:dropdownlist id=dropdown1 runat="server">
<asp:listitem>item 1</asp:listitem>
<asp:listitem>item 2</asp:listitem>
<asp:listitem>item 3</asp:listitem>
<asp:listitem>item 4</asp:listitem>
<asp:listitem>item 5</asp:listitem>
<asp:listitem>item 6</asp:listitem>
</asp:dropdownlist>
另一種方法是和數據綁定,如下:
arraylist values = new arraylist();
values.add ("in");
values.add ("ks");
values.add ("md");
values.add ("mi");
values.add ("or");
values.add ("tn");
dropdown1.datasource = values;
dropdown1.databind();
這兩種法法你可以任意選擇,我個人覺得后一種方法比較實用,尤其是當遇到用數據庫中得到的數據來做下拉框選項時。
9、 hyperlink : 超連接,但和html的<a href>不同的是hyperlink作為一個服務器端控制,具有text 和 navigateurl兩個屬性,并且可以用數據綁定的方法來定義,下面我列出兩種定義方法:
方法一:
<asp:hyperlink id=hyperlink1 navigateurl= “/quickstart” runat="server">
go to quickstart
</asp:hyperlink>
方法二:
<%@ import namespace="system.data" %>
<html>
<script language="c#" runat="server">
void page_load(object src, eventargs e) {
datatable dt = new datatable();
datarow dr;
dt.columns.add(new datacolumn("integervalue", typeof(int32)));
dt.columns.add(new datacolumn("stringvalue", typeof(string)));
dt.columns.add(new datacolumn("datetimevalue", typeof(datetime)));
dt.columns.add(new datacolumn("boolvalue", typeof(bool)));
dt.columns.add(new datacolumn("currencyvalue", typeof(double)));
for (int i = 0; i < 9; i++) {
dr = dt.newrow();
dr[0] = i;
dr[1] = "item " + int32.tostring(i);
dr[2] = datetime.now;
dr[3] = (i % 2 != 0) ? true : false;
dr[4] = 1.23 * (i+1);
dt.rows.add(dr);
}
myrepeater.datasource=new dataview(dt);
myrepeater.databind();
}
</script>
<body>
<h3><font face="verdana">databinding htmlanchor</font></h3>
<p>
<form runat=server>
<asp:repeater id="myrepeater" runat="server">
<template name="itemtemplate">
link for
<asp:hyperlink id=hyperlink1 text='<%# databinder.eval(container.dataitem, "stringvalue") %>' navigateurl='<%# databinder.eval(container.dataitem,"stringvalue","detailspage.aspx?id={0}") %>' runat="server" />
<p>
</template>
</asp:repeater>
</form>
</body>
</html>
10、image :圖片,只有一個屬性imageurl, 現在你可以實時改變圖片了,例子我就不給了。
11、 magebutton:圖片按鈕,比較好理解,但你可千萬別小瞧它呀,比起dhtml中的那個圖片按鈕來,它的功能強大多了。首先,它可以作為一個按鈕來使用(廢話),比起這個基本功能,下邊要談到的這個功能就會讓你咋舌的,它可以判斷你點擊的相對坐標,什么,沒什么用?我。。我扁你!看看下面這段程序:
imagebutton2.aspx
<html>
<head>
<script language="c#" runat="server">
void imagebutton1_onclick(object source, imageclickeventargs e) {
int x=e.x;
int y=e.y;
label1.text = "x: " + x.tostring();
label2.text = "y: " + y.tostring();
button1.imageurl = "/quickstart/aspplus/images/billg.gif";
// check to see if an eye, ear, nose or mouth was clicked.
if (x>20 && x<35 && y>72 && y<88) {
label3.text = "you clicked bill's ear.";
}
else if (x>42 && x<58 && y>48 && y<64) {
label3.text = "you clicked bill's eye.";
}
else if (x>62 && x<90) {
if (y>46 && y<56) {
label3.text = "you clicked bill's eye.";
}
else if (y<72 && y>60) {
label3.text = "you clicked bill's nose.";
}
else if (y<92 && y>74) {
button1.imageurl = "/quickstart/aspplus/images/billg_tongue.gif";
label3.text = "phfttttt-t-t-t-t-t!.";
}
else {
whoops();
}
}
else if (x>100 && x<108 && y>56 && y<72) {
label3.text = "you clicked bill's ear.";
}
else {
whoops();
}
}
void whoops() {
label3.text = "you missed! try clicking bill's eyes, ears, nose or mouth.";
}
</script>
</head>
<body>
<h3><font face="verdana">using imagebutton as an image map</font></h3>
<form runat=server>
<table width="100%" border=0>
<tr>
<td width="25%">
<asp:imagebutton id=button1 imageurl="/quickstart/aspplus/images/billg.gif" borderwidth="2px" onclick="imagebutton1_onclick" runat="server" />
</td>
<td>
<asp:label id=label1 text="x:" runat="server"/>
<br>
<asp:label id=label2 text="y:" runat="server"/>
</td>
</tr>
</table>
<asp:label id=label3 font-bold="true" text="" runat="server"/>
</form>
</body>
</html>
運行一下,你看到了什么?是比爾.蓋茨傻兮兮的一張笑臉,你如果點中他的眼睛和鼻子,就會告訴你你點中了哪兒,如果你點中他的嘴,他會伸一下舌頭,當然,這些只是根據你鼠標點中的相對位置來判斷相應的操作而已,但你別忘了這只是簡單的一個imagebutton就能夠做到的功能呀。
12、 label , 前面的例子已經講過了,是一個服務器端文本控制,它只有一個屬性:text , 你可以動態改變它。
13、 linkbutton :有一種服務器端按鈕控制,它的外形象hyperlink , 屬性也相同,但不同的是它可以提交表單,同其他兩種button控制一樣。
14、 listbox , 列表框,它和下拉框一樣,也有兩種方式定義選項,一種是直接列表,另一種是數據綁定,我就不再贅述了。
15、 panel : 面板服務器端控制,這可是個好東西,它可以作為其他服務器端控制的集合,它最實用的地方是可以生成一組服務器端控制或者顯示/隱藏一組服務器端控制,看看下面這個例子吧,是不是很奇妙?
panel1.aspx
<html>
<head>
<script language="c#" runat="server">
void page_load(object sender, eventargs e) {
// show/hide panel contents
if (check1.checked) {
panel1.visible=false;
}
else {
panel1.visible=true;
}
// generate label controls
int numlabels = int.fromstring(dropdown1.selecteditem.value);
for (int i=1; i<=numlabels; i++) {
label l = new label();
l.text = "label" + int32.tostring(i);
l.id = "label" + int32.tostring(i);
panel1.controls.add(l);
panel1.controls.add(new literalcontrol("<br>"));
}
// generate textbox controls
int numtexts = int.fromstring(dropdown2.selecteditem.value);
for (int i=1; i<=numtexts; i++) {
textbox t = new textbox();
t.text = "textbox" + int32.tostring(i);
t.id = "textbox" + int32.tostring(i);
panel1.controls.add(t);
panel1.controls.add(new literalcontrol("<br>"));
}
}
</script>
</head>
<body>
<h3><font face="verdana">panel example</font></h3>
<form runat=server>
<asp:panel id="panel1" runat="server"
backcolor="gainsboro"
height="200px"
width="300px">
panel1: here is some static content...
<p>
</asp:panel>
<p>
generate labels:
<asp:dropdownlist id=dropdown1 runat="server">
<asp:listitem value="0">0</asp:listitem>
<asp:listitem value="1">1</asp:listitem>
<asp:listitem value="2">2</asp:listitem>
<asp:listitem value="3">3</asp:listitem>
<asp:listitem value="4">4</asp:listitem>
</asp:dropdownlist>
<br>
generate textboxes:
<asp:dropdownlist id=dropdown2 runat="server">
<asp:listitem value="0">0</asp:listitem>
<asp:listitem value="1">1</asp:listitem>
<asp:listitem value="2">2</asp:listitem>
<asp:listitem value="3">3</asp:listitem>
<asp:listitem value="4">4</asp:listitem>
</asp:dropdownlist>
<p>
<asp:checkbox id="check1" text="hide panel" runat="server"/>
<p>
<asp:button text="refresh panel" runat="server"/>
</font>
</form>
</body>
</html>
好了,先說到這里吧,有點兒累了。以后我將介紹剩下的13種服務器端控制。