Copyright © 2003-2009
By Suthep Sangvirotjanaphat
  Mobile: 089-967-2200, 081-915-7816
Phone: 0-2992-4877   Fax: 0-2992-4878
Fast Contact Us

GreatFriends.Biz Community

Custom Search
Copy เพื่ออ้างอิงถึงข้อความนี้:
 MESSAGE #106923 (อ่าน 1,954 ครั้ง)

ตัวอย่าง การใช้งาน Button ใน MasterPage ใน Child Page

Tags: Article
 
         สำหรับตัวอย่างเป็น Tip เล็ก ๆ น้อย ๆ ที่เอามาให้ดูกัน โดยที่เราจะ Control ปุ่ม โดยใช้ปุ่มที่ MasterPage ที่เดียว
และใช้กับทุก ๆ หน้าที่มี ฟังก์ชัน การทำงานลักษณะเดียวกัน
 
         ตัวอย่างนี้ ทำการสร้างปุ่ม Add Edit Delete Print ที่หน้า Master Page และนำไปใช้ ที่ Child Page
สร้าง Solution และ UI ตามรูปข้างล่างนี้ครับ
 
--================== Masterpage.aspx ===================
 

<%@ Master Language="VB" CodeFile="MasterPage.master.vb" Inherits="MasterPage" %>

<!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>

<asp:ContentPlaceHolder id="head" runat="server">

</asp:ContentPlaceHolder>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:Button ID="btnAdd" runat="server" Text="Add" />

<asp:Button ID="btnEdit" runat="server" Text="Edit" />

<asp:Button ID="btnDelete" runat="server" Text="Delete" />

<asp:Button ID="btnPrint" runat="server" Text="Print" />

<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">

</asp:ContentPlaceHolder>

</div>

</form>

</body>

</html>

 

--================== Masterpage.master.vb===================

 

Partial Class MasterPage

Inherits System.Web.UI.MasterPage

 

'-- สร้าง Property เพื่อไว้สำหรับ Ref ที่ Child

Public Property ctrlbtnAdd() As Button

Get

Return btnAdd

End Get

Set(ByVal value As Button)

btnAdd = value

End Set

End Property

Public Property ctrlbtnEdit() As Button

Get

Return btnEdit

End Get

Set(ByVal value As Button)

btnEdit = value

End Set

End Property

Public Property ctrlbtnDelete() As Button

Get

Return btnDelete

End Get

Set(ByVal value As Button)

btnDelete = value

End Set

End Property

Public Property ctrlbtnPrint() As Button

Get

Return btnPrint

End Get

Set(ByVal value As Button)

btnPrint = value

End Set

End Property

End Class

 

 

--====================== Default.aspx สร้างหน้าตัวอย่าง Ref MasterPage

 
 

<%@ Page Title="" Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

<table style="font-family: Tahoma; font-size: medium; background-color: #FFFFFF; padding: inherit; margin: auto"

width="100%">

<tr><td >

<asp:Label ID="lblText" runat="server" Text=""></asp:Label>

</td></tr>

</table>

</asp:Content>

 

 

'=============== Default.aspx.vb

Partial Class _Default

Inherits System.Web.UI.Page

Dim m As MasterPage

Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init

'---- Get MasterPage และใช้ Property ได้เลยครับ

 

m = CType(Page.Master, MasterPage)

m.ctrlbtnAdd.Text = "เพิ่มรายการ"

m.ctrlbtnEdit.Enabled = False

AddHandler m.ctrlbtnPrint.Click, AddressOf btnPrint_Click

End Sub

Protected Sub btnPrint_Click(ByVal sender As Object, ByVal e As System.EventArgs)

Me.lblText.Text = "Print"

End Sub

End Class

 

 

ผลลัพธ์ที่ได้

 
หากผู้ใดมีข้อสงสัยหรือ idea อะไร Post ต่อได้เลยนะครับ
จบ .............
 
 


mr.l วันที่ส่ง: 23 พ.ค. 52 17:02 GMT+7
วันที่ปรับล่าสุด: 25 พ.ค. 52 23:51 GMT+7
REPLY #1 (106943)
อืมดีมากเลยครับ ขอบคุณมากครับ


Ixus วันที่ส่ง: 23 พ.ค. 52 21:25 GMT+7
วันที่ปรับล่าสุด: 23 พ.ค. 52 21:25 GMT+7
REPLY #2 (106948)

ขอบคุณ mr.l นะครับ จะนำแนวทางนี้ไปต่อยอดอีกเยอะ ๆ เลยครับ

 
ขอบคุณครับ


nuttanun4u วันที่ส่ง: 23 พ.ค. 52 21:33 GMT+7
วันที่ปรับล่าสุด: 23 พ.ค. 52 21:33 GMT+7
REPLY #3 (107006)
ของดีมีประโยชน์


nano วันที่ส่ง: 25 พ.ค. 52 07:57 GMT+7
วันที่ปรับล่าสุด: 25 พ.ค. 52 07:57 GMT+7
REPLY #4 (107019)
 เยี่ยมเลยครับ thank you หลายๆ ครับ


nas วันที่ส่ง: 25 พ.ค. 52 09:43 GMT+7
วันที่ปรับล่าสุด: 25 พ.ค. 52 09:43 GMT+7
REPLY #5 (107020)
ในกรณีที่แน่ใจว่า MasterType ไม่เปลี่ยนแปลงในขณะรัน
อาจจะใช้ <%@ MasterType %> ใน Content Page เพื่อจะได้ใช้ Page.Master ได้เลย โดยไม่ต้อง cast ก่อน
 
นอกจากนั้น เห็นมีการคุยกันเกี่ยวกับประโยชน์ของ interface
 
คำสั่ง Interface นี่ดียังไงเหรอครับ = =a
http://greatfriends.biz?106967
 
นี่ก็อาจจะเป็นอีกงานที่ใช้ interface ได้ดีครับ
(ออกแบบให้ ContentPage ไม่ต้องรู้จักกับ MasterPage จริงๆ
แต่ให้เห็นผ่านกันทาง interface แทน)


surrealist วันที่ส่ง: 25 พ.ค. 52 10:00 GMT+7
วันที่ปรับล่าสุด: 25 พ.ค. 52 10:00 GMT+7
REPLY #6 (107086)
ขอบคุณ อ.สุเทพ ที่มาแนะนำเพิ่มเติม
ในกรณีที่แน่ใจว่า MasterType ไม่เปลี่ยนแปลงในขณะรัน
อาจจะใช้ <%@ MasterType %> ใน Content Page เพื่อจะได้ใช้ Page.Master ได้เลย โดยไม่ต้อง cast ก่อน
 
 
'Case นี้ ที่ Content Page ใช้
 
 ' Code Behind ก็ใช้ Master อย่างที่ อ.สุเทพ บอกไว้ได้เลยครับ

<%@ MasterType VirtualPath="~/MasterPage.master"%>

'Dim m As MasterPage

Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init

' m = CType(Page.Master, MasterPage)

Master.ctrlbtnAdd.Text = "เพิ่มรายการ"

Master.ctrlbtnEdit.Enabled = False

AddHandler Master.ctrlbtnPrint.Click, AddressOf btnPrint_Click

End Sub

 


mr.l วันที่ส่ง: 25 พ.ค. 52 22:59 GMT+7
วันที่ปรับล่าสุด: 25 พ.ค. 52 22:59 GMT+7
REPLY #7 (107094)
 Implement Interface
 
' App_Code IMasterPageProperties.vb
 

Public Interface IMasterPageProperties

Property CtrlbtnAdd() As Button

Property CtrlbtnEdit() As Button

Property CtrlbtnDelete() As Button

Property CtrlbtnPrint() As Button

End Interface

 
' Master Page Implement INtergace IMasterPageProperties
 

Partial Public Class MasterPage

Inherits System.Web.UI.MasterPage

Implements IMasterPageProperties

Public Property ctrlbtnAdd() As Button Implements IMasterPageProperties.CtrlbtnAdd

Get

Return btnAdd

End Get

Set(ByVal value As Button)

btnAdd = value

End Set

End Property

Public Property ctrlbtnEdit() As Button Implements IMasterPageProperties.CtrlbtnEdit

Get

Return btnEdit

End Get

Set(ByVal value As Button)

btnEdit = value

End Set

End Property

Public Property ctrlbtnDelete() As Button Implements IMasterPageProperties.CtrlbtnDelete

Get

Return btnDelete

End Get

Set(ByVal value As Button)

btnDelete = value

End Set

End Property

Public Property ctrlbtnPrint() As Button Implements IMasterPageProperties.CtrlbtnPrint

Get

Return btnPrint

End Get

Set(ByVal value As Button)

btnPrint = value

End Set

End Property

End Class

 
 
' หน้า aspx ครับ  

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default2.aspx.vb" Inherits="Default2" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

</asp:Content>

 

 
'-- CodeBehind ครับ
 

Partial Class Default2

Inherits System.Web.UI.Page

Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreInit

MasterPageFile = "~/MasterPage.master"

End Sub

Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init

' Case Properties

Dim [property] As IMasterPageProperties = TryCast(Page.Master, IMasterPageProperties)

If [property] IsNot Nothing Then

[property].CtrlbtnAdd.Text = "เพิ่มรายการ"

[property].CtrlbtnEdit.Enabled = False

AddHandler [property].CtrlbtnPrint.Click, AddressOf btnPrint_Click

End If

End Sub

Protected Sub btnPrint_Click(ByVal sender As Object, ByVal e As System.EventArgs)

End Sub

End Class

 

' คร่าว ๆ ตัวอย่าง Implement Interface ครับ ผิดพลาด หรือ สงสัยประการใด Post ต่อด้านล่าง เลยนะค้าบ



mr.l วันที่ส่ง: 25 พ.ค. 52 23:51 GMT+7
วันที่ปรับล่าสุด: 25 พ.ค. 52 23:51 GMT+7
กระทู้นี้มีอายุเกิน 365 วันแล้ว ท่านจะไม่สามารถตอบกระทู้นี้ได้อีก
ถ้าต้องการสนทนาต่อ กรุณาตั้งเป็นกระทู้ใหม่ได้ในหน้าโฮม
และอาจจะอ้างถึงกระทู้นี้ โดยก๊อปปี้ข้อความในกล่องสีขาวด้านล่างไปแปะในกระทู้ใหม่

copy เพื่ออ้างอิงถึงข้อความนี้:
ตัวอย่าง การใช้งาน Button ใน MasterPage ใน Child Page
http://greatfriends.biz?106923


8 ก.ย. 19:42
Online: 158