|
|
|
[C#] แทรกตัวแปรจากหลังบ้าน ไว้ที่หน้า html aspx อย่างไรครับ |
|
|
|
|
|
|
|
Code (ASP)
<input id="Button1" type="button" value="<% = UrlStr %>" onclick="window.open('<% = UrlStr %>','','')" /></div>
Code (C#)
public string UrlStr = @"https://www.thaicreate.com/dotnet/forum/055669.html";
|
|
|
|
|
Date :
2011-02-08 13:17:48 |
By :
Programmer Of Persia |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากๆครับ
และอยากทราบสาเหตุที่ต้องมี @ นำหน้าใน Code (C#)
public string UrlStr = @"https://www.thaicreate.com/dotnet/forum/055669.html";
น่ะครับ
|
|
|
|
|
Date :
2011-02-09 16:32:00 |
By :
Kim |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อีกอย่างคือผมจะศึกษาการใช้งานพวก <% %> นี้ได้จากไหนครับ
มันมีแบบอื่นๆอีก
ผมเห็นใน VB มี Code (VB.NET)
Code (ASP)
<%#Eval("xxx")%>
ของ C# มีอะไรบ้างครับ
|
|
|
|
|
Date :
2011-02-09 16:34:57 |
By :
Kim |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<%= %> มีค่าเท่ากับ Response.Write ณ ตำแหน่งนั้นๆ ค่ะ ใช้กันมาตั้งแต่ยุค ASP ( ยุคหินเก่า )
<%# %> ใช้เพื่อการ bind data field ของ data source ที่ หน้า DESIGN เพื่อลด code ของ code be-hide ลง
จะใช้กับ control ที่มีคุณสมบัติ Bind Datasource ได้เท่านั้นค่ะ
แต่ในบางกรณีจะพบการใช้ <%# %> กับ control ที่ไม่มีคุณสมบัติ bind datasource เช่น label หรือ textbox เป็นต้น
ทั้งนี้เพราะมีการ bind datasource ไปยัง control container ของ label หรือ textbox นั้นไว้แล้ว
เช่น gridview หรือ กระทั่ง Page
และในการ bind data field ออก ณ design mode มีสอง statement ให้ใช้ คือ
Eval และ Bind
Eval
- Eval เริ่มใช้มาตั้งแต่ยุคแรกเริ่ม กับ .net framework และใช้ได้กับ compact framework ทุก version
โดยเป็น abbv มาจาก DataBinder.Eval
ซึ่งมี 2 overload Eval(Object, String) และ Eval(Object, String, String) [ดูรายละเอียดได้จาก MSDN ที่ติดมากะ VSS]
ตัวหลังนี่เพิ่ม format pattern ของพวกวัน-เวลา และเขียนแบบเต็มๆดังนี้.-
<%# DataBinder.Eval (Container.DataItem, "FieldName") %>
แต่โดยปกตินิยมเขียนแบบสั้นๆดังนี้.-
<%# Eval ("FieldName") %>
ดังตัวอย่าง
Code (ASP)
<%@ Page language="c#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script runat="server">
void Page_Load(Object sender, EventArgs e)
{
SqlConnection cnn = new
SqlConnection("server=(local);database=pubs;Integrated Security=SSPI");
SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn);
DataSet ds = new DataSet();
da.Fill(ds, "authors");
Repeater1.DataSource = ds.Tables["authors"];
Repeater1.DataBind();
}
</script>
<html>
<body>
<form id="WebForm2" method="post" runat="server">
<asp:Repeater id="Repeater1" runat="server">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem,"au_id") %><br>
</ItemTemplate>
</asp:Repeater>
</form>
</body>
</html>
ทั้งนี้ Eval จะเรียกได้ Read-only databind ก้อได้คือใน template หรือ field ที่นำ Eval มาใช้
จะนำเอาข้อมูลมานำเสนอเพียงอย่างเดียว หากมีการเปลี่ยนแปลงจะไม่มีผลกับตัว datasource
และใน .net framework 2.0 จึงได้เพิ่ม statement : Bind ขึ้นมา
Bind
ข้อแตกต่างที่สำคัญของ bind คือ เป็นการ bind แบบสองทางดังข้างต้น
เพราะใน asp.net นั้นมีกลุ่ม control ที่สามารถทำการ CRUD (Create Read Update Delete) ได้อัตโนมัติ
เมืื่อรวมเข้ากับ คุณสมบัติของ Bind statement จึงทำให้สามารถทำงานได้เต็มรูปแบบโดยที่ไม่ต้องไปเขียน
code เพิ่มเติม (Auto Operation with code less >> ไม่ต้องเขียน code หมายถึง code behide นั่นแหละค่ะ)
จาก Design mode ตัวอย่างข้างล่าง สังเกตุว่ามีการใช้ทั้ง Eval และ Bind
Code (ASP)
<EditItemTemplate>
<table>
<tr>
<td align=right>
<b>Employee ID:</b>
</td>
<td>
<%# Eval("EmployeeID") %>
</td>
</tr>
<tr>
<td align=right>
<b>First Name:</b>
</td>
<td>
<asp:TextBox ID="EditFirstNameTextBox" RunAt="Server"
Text='<%# Bind("FirstName") %>' />
</td>
</tr>
<tr>
<td align=right>
<b>Last Name:</b>
</td>
<td>
<asp:TextBox ID="EditLastNameTextBox" RunAt="Server"
Text='<%# Bind("LastName") %>' />
</td>
</tr>
<tr>
<td colspan="2">
<asp:LinkButton ID="UpdateButton" RunAt="server"
Text="Update" CommandName="Update" />
<asp:LinkButton ID="CancelUpdateButton" RunAt="server"
Text="Cancel" CommandName="Cancel" />
</td>
</tr>
</table>
</EditItemTemplate>
เพราะ EmployeeID คือ PrimaryKey เราจะไม่ทำอะไรกะมัน ส่วน field ที่เหลือจะแก้ไขได้
และเนื่องจาก ใช้ที่ Design mode ภาษาใดๆ ที่ Support asp.net ล้วนใช้ได้หมดค่ะ
|
|
|
|
|
Date :
2011-02-10 02:44:10 |
By :
สาวเอ๋อ (ก้อคนมานเอ๋อ) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
โห
ขอบคุณจากใจจริงมากๆครับ "สาวเอ๋อ" ! จัดชุดใหญ่มาเลย
|
|
|
|
|
Date :
2011-02-10 11:47:58 |
By :
Kim |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากครับผม
ตอบได้ละเอียดมากครับ
|
|
|
|
|
Date :
2013-07-16 14:45:09 |
By :
reekoong |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|