PDA

View Full Version : دسترسی به کنترلها در Master pageهای تودرتو



webman
پنج شنبه 21 آذر 1387, 15:14 عصر
با سلام به دوستان ، سوال درباره Master page ها است البته نحوه دسترسی به کنترلهای درون آنها .با یک مثال بیان میکنم :
زمانیکه از یک مستر پیج استفاده میکنیم برای دسترسی به یک کنترل Form View اینگونه عمل میکنیم

Dim mpContent As ContentPlaceHolder
Dim mpFormview As FormView
mpContent = CType(Master.FindControl("ContentPlaceHolder1"), ContentPlaceHolder)
mpFormview = CType(mpContent.FindControl("formview1"), FormView)

که میتوان به کنترلهای درون formview نیز به همین صورت دسترسی داشت

Dim mpTxtnewsid As TextBox
mpTxtnewsid = CType(mpFormview.FindControl("txtNewsid"), TextBox)
مثلا به یک textboxدرون formview

سوال من در استفاده از دو مستر پیج میباشد یعنی دو مستر پیج تو در تو پس دو تا ContentPlaceHolder داریم که مستر پیج دومی در ContentPlaceHolder متعلق به مستر پیج اولی قرار گرفته است و همچنین formview در مستر پیج دومی قرار گرفته حال با روش بالا من
نتوانستم به هیچ یک دست پیدا کنم
اصلا در دو مستر پیج تودرتو چگونه به یک مثلا formview در صفحه ای که در مستر پیج دوم است دسترسی میتوان داشت؟
ساده تر من دو تا مسترپیج تودرتو دارم و در content page دومی که صفحات قرار میگیرند در یک صفحه یک form view دارم میخوام به این form view یا هر کنترلی که در این صفحه است دسترسی داشته باشم لطفا راهنمایی کنید
با تشکر فراوان

RoostaYeBekr
شنبه 23 آذر 1387, 00:18 صبح
دو مستر پیج تو در تو پس دو تا ContentPlaceHolder داریم که مستر پیج دومی در ContentPlaceHolder متعلق به مستر پیج اولی قرار گرفته است
با سلام
:لبخندساده:
همین کار رو چطور انجام دادید؟

milade
شنبه 23 آذر 1387, 13:34 عصر
این شیوه های گول زدن دیباگر همین بد بختی ها رو هم داره D:
در کل لطفا یه چیز درست حسابی بگید یا یه سورس بزارید تا بفهمیم چه کار کردید
موفق باشید

webman
پنج شنبه 28 آذر 1387, 19:32 عصر
با سلام ، بله درسته من نتونستم درست مطلب را شرح دهم و مشکلم از راه دیگری حل شد و به درد سر استفاده از اینگونه دسترسی ها نمی ارزید. درست است در vs2005 اینکار دردسر ساز است یعنی استفاده از مستر پیجهای تو در تو اما مشکلات آن در vs2008 حل شده است در vs2005 باید بطور دستی اقدام به ساخت مستر پیج های تو در تو کرد که در این حالت هم حالت Design پروژه را از دست می دهیم برای اطلاعات بیشتر به MSDN مراجعه کنید(Nested ASP.NET Master Pages)

این کد مستر پیج اصلی(پدر)



<%@MasterLanguage="VB"CodeFile="Master1.master.vb"Inherits="Master1" %>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>Untitled Page</title>
</head>
<bodydir="rtl">
<formid="form1"runat="server">
<div>
<tablecellpadding="0"cellspacing="0"width="100%"style=" height:100%">
<tr>
<tdstyle="height:105px; border:solid 1px red; ">
<tablecellpadding="0"cellspacing="0"width="100%">
<tr>
<tdstyle="width: 250px;">master1</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<asp:contentplaceholderid="ContentMain"runat="server">
</asp:contentplaceholder>

</td>
</tr>
<tr>
<tdstyle="height:50px;">

</td>
</tr>
</table>
</div>
</form>
</body>
</html>

این کد مربوط به مستر پیج فرعی(فرزند) که دیگر تگ formو htmlو body ندارد ودارای کنترل Content است که ContentPlaceholderID آن به ContentMain یعنی ContentPlaceholder مستر پیج اصلی اشاره دارد. به MasterPageFile توجه کن


<%@ Master Language="VB" CodeFile="Master2.master.vb" Inherits="Master2" MasterPageFile="~/Master1.master" %>
<asp:Content ID="content1" ContentPlaceHolderID="ContentMain" runat="server" >
<div>
<table cellpadding ="0" cellspacing ="0" width ="100%">
<tr>
<td style ="width:206px;" valign="top" >
<table cellpadding ="0" cellspacing ="0" width="100%">
<tr>
<td>
<div style ="border:solid 1px blue; height:420px; width:200px; padding-right:5px;">
master2
</div>
</td>
</tr>
</table>
</td>
<td style ="width:100%" >
<asp:contentplaceholder id="Contentchild" runat="server">
</asp:contentplaceholder>
</td>
</tr>
</table>


</div>
</asp:Content>

این هم یک صفحه ساده که به ContentPlaceholder مستر پیج فرعی اشاره دارد
به MasterPageFile توجه کن


<%@ Page Language="VB" MasterPageFile="~/Master2.master" AutoEventWireup="false" CodeFile="main.aspx.vb" Inherits="main" title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Contentchild" Runat="Server">
<table cellpadding="0" cellspacing="0" width="100%" border="2px" style="border:solid 1px gray" >
<tr>
<td style="height:200px; " >

</td>
</tr>
</table>
<div style="margin-top:5px; ">
<table cellpadding="0" cellspacing="0" width="100%" border="2px">
<tr>
<td style="height:200px; " >

</td>
</tr>
</table>
</div>
</asp:Content>

یعنی صفحه ساده در مستر فرعی و مستر فرعی هم در مستر اصلی قرار دارد
در vs2005 این روند ساخت فقط در source view امکانپذیر است پس برو سراغ vs2008

raminsoft
شنبه 30 آذر 1387, 00:06 صبح
اگر مشکلی نیست ، بفرمائید مشکاتان چگونه حل شد؟
و از چه کدی استفاده نمودید؟