ورود

View Full Version : چیزی شبیه marquee



roya2002_80
دوشنبه 16 آذر 1388, 08:06 صبح
سلام
من یه چیزی تو سایت میهن نیک (http://mihannic.com/) چیزی شبیه marquee دیدم (در قسمت سرویسهای توسعه سامان )و نتونستم خودم پیاده سازیش کنم.. یک جدولی هست و هر دفعه یک سطر از جدول را نشان می دهند...
آیا کسی کدشو می دونه ؟

tefos666
جمعه 20 آذر 1388, 16:36 عصر
سلام دوست عزیز
من این کد رو تو وب با C#.net نوشتم
این کاری نداره کافی شما یک جدول درست کنیدمثلا میخواهید یه قسمتی به نام کلام بزرگان داشته باشید که هربار سایت رفرش میشه یه متن جدید از تو دیتابیس نشون بده

اول یه جدول بساز به هر اسمی مثلا tbl_WOD توش 2تا فیلد بزار

1- ID از نوع کلید و Autonumber باشه از نوع عددی

2- Matn از نوع Nvarchar(max) f باشه

حالا جدولت رو پر کن (یه سرچ تو نت بزنی یه عالمه متن قشنگ گیرت میاد)

حالا تو فرم لودت کد زیر رو بنویس



String Cstring = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\datacenter.mdf;Integrated Security=True;User Instance=True;";
String Query = "select top(1) id, matn from tbl_WOD order by newid()";
SqlConnection conn = new SqlConnection(Cstring);
conn.Open();
SqlCommand cmd = new SqlCommand(Query, conn);
SqlDataReader DataRead = cmd.ExecuteReader();
if (DataRead.Read())
{

Label1.Text = DataRead.GetValue(1).ToString();
}
DataRead.Close();



خود sql یه دستور به اسم newid داره که هرسری Randomize یه id از جدولت رو برمیگردونه

این تا اینجای کار ، در مورد marquee بودنش هم باید کد marquee که واسه html هستش رو برداری و توصفحه سمت aspx کدش رو وارد کنی تا label مورد نظرت حرکت کنه مثل کد زیر



<marquee id="ml" direction="up" onmouseout="ml.start();" onmouseover="ml.stop();"
scrollamount="1" scrolldelay="20" style="width: 166px; height: 116px; text-align: center"><asp:Repeater id="Repeater1" runat="server" DataSourceID="dsnews">


البته کد بالا فقط جنبه راهنمایی داره و مربوط به سوال شما نیست از reapeter هم میتونی استفاده کنی با یک ذره ظرافت حتی میتونی یه RSS قشنگ واسه سایتت با همین تکنیک طراحی کنی. امیدوارم کارتون رو راه انداخته باشه - موفق باشی

mohsen_Iran
شنبه 21 آذر 1388, 19:40 عصر
سلام
و اگه می خواستید که حرکت بکنه می تونید از جاوا اسکریپت یا جی کوئری که دربارش زیاد حرف زده شده استفاده کنید

roya2002_80
پنج شنبه 03 دی 1388, 12:11 عصر
از جوابی که دادید ممنونم ، ولی منظور من یه چیز دیگه بود، شما سایتی که داده بودم رو دیدید؟

zr_1364
شنبه 05 دی 1388, 02:02 صبح
من سایت رو دیدم
از اسکریپت استفاده شده فکر هم نمی کنم خیلی نایاب باشه بگردید می تونید پیداش کنید

sajjadnegaresh
سه شنبه 14 تیر 1390, 14:32 عصر
ایده دوستمون برای استفاده از Repeater خوبه ولی کامل توضیح داده نشد
باید یک Marquee درست کنید به همراه یک Repeater به صورت زیر :


<marquee direction="right" scrolldelay="100" onmouseover="stop();" onmouseout="start();">
<span class="marquee_text">
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<table border="0">
<tr>
</HeaderTemplate>
<ItemTemplate>
<td width="100%">
<%# DataBinder.Eval(Container.DataItem,"Contents") %>
</td>
</ItemTemplate>
<FooterTemplate>
</tr>
</table>
</FooterTemplate>
</asp:Repeater>
</span>
</marquee>


در قسمت کد نویسی باید تابعی برای فرخوانی مقادیر از دیتابیس نوشته بشه به این صورت :

private void CatchShow()
{
SqlConnection con = new SqlConnection();
SqlCommand com = new SqlCommand();
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
string strsql = "Data Source=.;Initial Catalog=PegahWeb;Persist Security Info=True;User ID=pegahweb;Password=1";
con.ConnectionString = strsql;
con.Open();
com.Connection = con;
com.CommandText = "SELECT CONTENTS FROM TBL_CATCH WHERE ACTIVE=1";
da.SelectCommand = com;
da.Fill(ds, "TBL_CATCH");
con.Close();
Repeater1.DataMember = "Contents";
Repeater1.DataSource = ds.Tables["Tbl_Catch"].DefaultView;
Repeater1.DataBind();
}


و تابع در جای مناسب فراخوانی شود