PDA

View Full Version : عدم مقدار دهی صحیح در repeater



niloo17
یک شنبه 11 بهمن 1388, 12:06 عصر
سلام دوستان
من یک گالری عکس دارم که با کلیک بر روی هر عکس کوچک عکس بزرگ در پایین نمایش داده می شود ولی مشکل اینجاست که با کلیک بر روی هر عکس فقط عکس اول را نمایش می دهد
ممنون می شم اگه راهنماییم کنید


<script type="text/javascript">

var goleftimage='prev.gif'
var gorightimage='next.gif'
//configure menu width (in px):
var menuwidth=700
//configure menu height (in px):
var menuheight=150
//Specify scroll buttons directions ("normal" or "reverse"):
var scrolldir="normal"
//configure scroll speed (1-10), where larger is faster
var scrollspeed=6
//specify menu content
var menucontents='<nobr><asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource"><ItemTemplate> <a ID="a" href="javascript:show()"> <asp:Label runat="server" ID="lbl" Text=<%# "~/File/PhotoGallery/"+Eval("ID").ToString()+Eval("Photo").ToString() %> /><img ID="img" src="<%# "../../File/PhotoGallery/"+Eval("ID")+Eval("Photo") %>" alt="" height="130px"/></a>&nbsp;&nbsp;&nbsp;&nbsp;</ItemTemplate></asp:Repeater> <asp:SqlDataSource ID="SqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:SchoolConnectionString %>" SelectCommand="SELECT [Photo], [ID] FROM [PhotoGallery]"> </asp:SqlDataSource></nobr>'



protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
string _eventArg = Request["__EVENTARGUMENT"];
if (_eventArg == "show")
{
Label a = (Label)Repeater1.Controls[0].FindControl("lbl");
Image.ImageUrl = a.Text;

}
}
}

حامد مصافی
یک شنبه 11 بهمن 1388, 12:14 عصر
کد شما اصلاً ساختار صحیحی ندارد!
یک ButtonLink در ItemTemplate کنترل Repeater قرار دهید.
مقدار CommandName آن را به مقداری مانند "chnage_image" و CommandArgument را به ID رکورد متناظر ست کنید. و سپس در رویداد ItemCommand کنترل Repeater با استفاده از بررسی e.CommandName و e.ComandArgument که در بالا مقدار دهی شده اند می توانید رکورد مورد نظر را پیدا کرده و نمایش دهید.

و اگر مي خواهيد از طريق جاوا اسكريپت اين كار را انجام دهيد متد show را بايد طوري بنويسيد تا يك ID يا مسير عكس را دريافت كند.

niloo17
یک شنبه 11 بهمن 1388, 12:30 عصر
ممنون از راهنماييتون
ولي مشكل اينه كه وقتي از اين كنترل ها استفاده مي كنم خطاي زير را ميده


Control 'ctl00_head_Repeater1_ctl00_LinkButton1' of type 'LinkButton' must be placed inside a form tag with runat=server.

حامد مصافی
یک شنبه 11 بهمن 1388, 12:37 عصر
هر صفحه ASP.NET يك تك Form دارد كه از ابتدا تا انتهاي ثفحه را پوشش مي دهد، مگر اينكه روال نا معقولي در پيش گرفته باشيد، لطفاً سورس كل صفحه را ضميمه كنيد.

niloo17
یک شنبه 11 بهمن 1388, 18:24 عصر
سلام
اینم صفحه گالری


<%@ Page Language="C#" MasterPageFile="~/L2Master/L3Master/MasterPage.master" AutoEventWireup="true" CodeFile="photogallery.aspx.cs" Inherits="subsystem_news_photogallery" Title="Untitled Page" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
<object ><table align="center" width="80%">
<tr>
<td ></td>
</tr>
<tr>
<td>
<script type="text/javascript">

/***********************************************
* Scrollable Menu Links- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* Visit http://www.dynamicDrive.com for hundreds of DHTML scripts
* This notice must stay intact for legal use
***********************************************/

//configure path for left and right arrows
var goleftimage='prev.gif'
var gorightimage='next.gif'
//configure menu width (in px):
var menuwidth=700
//configure menu height (in px):
var menuheight=150
//Specify scroll buttons directions ("normal" or "reverse"):
var scrolldir="normal"
//configure scroll speed (1-10), where larger is faster
var scrollspeed=6
//specify menu content
var menucontents='<nobr><asp:Label runat="server" ID="lbl" visible="false" Text=<%# "~/File/PhotoGallery/"+Eval("ID").ToString()+Eval("Photo").ToString() %> ></asp:Label> <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource"><ItemTemplate><a ID="a" href="javascript:show()"><asp:Label runat="server" ID="lbl" visible="false" Text=<%# "~/File/PhotoGallery/"+Eval("ID").ToString()+Eval("Photo").ToString() %> ></asp:Label> <img ID="img" src="<%# "../../File/PhotoGallery/"+Eval("ID")+Eval("Photo") %>" alt="" height="130px"/></a>&nbsp;&nbsp;&nbsp;&nbsp;</ItemTemplate></asp:Repeater> <asp:SqlDataSource ID="SqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:SchoolConnectionString %>" SelectCommand="SELECT [Photo], [ID] FROM [PhotoGallery]"> </asp:SqlDataSource></nobr>'

////NO NEED TO EDIT BELOW THIS LINE////////////

var iedom=document.all||document.getElementById
var leftdircode='onMouseover="moveleft()" onMouseout="clearTimeout(lefttime)"'
var rightdircode='onMouseover="moveright()" onMouseout="clearTimeout(righttime)"'
if (scrolldir=="reverse"){
var tempswap=leftdircode
leftdircode=rightdircode
rightdircode=tempswap
}
if (iedom)
document.write('<span id="temp" style="visibility:hidden;position:absolute;top:-100;left:-5000">'+menucontents+'</span>')
var actualwidth=''
var cross_scroll, ns_scroll
var loadedyes=0
function fillup(){
if (iedom){
cross_scroll=document.getElementById? document.getElementById("test2") : document.all.test2
cross_scroll.innerHTML=menucontents
actualwidth=document.all? cross_scroll.offsetWidth : document.getElementById("temp").offsetWidth
}
else if (document.layers){
ns_scroll=document.ns_scrollmenu.document.ns_scrol lmenu2
ns_scroll.document.write(menucontents)
ns_scroll.document.close()
actualwidth=ns_scroll.document.width
}
loadedyes=1
}
window.onload=fillup

function moveleft(){
if (loadedyes){
if (iedom&&parseInt(cross_scroll.style.left)>(menuwidth-actualwidth)){
cross_scroll.style.left=parseInt(cross_scroll.styl e.left)-scrollspeed+"px"
}
else if (document.layers&&ns_scroll.left>(menuwidth-actualwidth))
ns_scroll.left-=scrollspeed
}
lefttime=setTimeout("moveleft()",50)
}

function moveright(){
if (loadedyes){
if (iedom&&parseInt(cross_scroll.style.left)<0)
cross_scroll.style.left=parseInt(cross_scroll.styl e.left)+scrollspeed+"px"
else if (document.layers&&ns_scroll.left<0)
ns_scroll.left+=scrollspeed
}
righttime=setTimeout("moveright()",50)
}


if (iedom||document.layers){
with (document){
write('<table border="0" cellspacing="0" cellpadding="2">')
write('<td valign="middle"><a href="#" '+leftdircode+'><img src="'+goleftimage+'"border=0></a> </td>')
write('<td width="'+menuwidth+'px" valign="top">')
if (iedom){
write('<div style="position:relative;width:'+menuwidth+'px;height:'+m enuheight+'px;overflow:hidden;">')
write('<div id="test2" style="position:absolute;left:0;top:0">')
write('</div></div>')
}
else if (document.layers){
write('<ilayer width='+menuwidth+' height='+menuheight+' name="ns_scrollmenu">')
write('<layer name="ns_scrollmenu2" left=0 top=0></layer></ilayer>')
}
write('</td>')
write('<td valign="middle"> <a href="#" '+rightdircode+'>')
write('<img src="'+gorightimage+'"border=0></a>')
write('</td></table>')
}
}

</script>
</td>
</tr>
</table></object>
<script language="javascript" type="text/javascript">
function show()
{
__doPostBack('__page','show');
}
</script>

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

<table align="center" cellpadding="2" width="80%">
<tr>
<td align="center">
<asp:Image ID="Image" runat="server" ImageUrl="500px" />
</td>
</tr>
</table>

</asp:Content>

حامد مصافی
یک شنبه 11 بهمن 1388, 18:42 عصر
شما از MasterPage استفاده كرده ايد، تگ فرم مزبور در MasterPage بايد باشد. در مستر پيج دنبال عبارتي مانند زير باشيد:

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

niloo17
یک شنبه 11 بهمن 1388, 18:59 عصر
من توی مستر پیج فقط یک عکس زمینه ست کردم چیز خاصی نداره
ممنون می شم اگه پیشنهاد دیگه برای گالری تصاویر دارین بگین

حامد مصافی
دوشنبه 12 بهمن 1388, 10:14 صبح
اگر مسترپيج يا صفحه شما يك تگ فرم با خصوصيت runat=server نداشته باشد توانايي درج كنترل هايي را كه PostBack ايجاد مي كنند را نخواهيد داشت.