PDA

View Full Version : جلوگیری از اسکرول gridview



sara_aryanfar
شنبه 19 آذر 1390, 16:33 عصر
با سلام من می خوام کنار اسلایدر عکسی که دارم عنوان 7 خبر رو به نمایش بگذارم حالا من از یه گرید ویو استفاده کردم مشکلی که دارم به صورت اتوماتیک اسکرول بر میداره با اینکه دایوی که داخلشه از اون بزرگتر هست ووقتی که صفحه رو کوچک می کنم باز از هر دوسمت اسکرول بر میداره چطوری باید درستش کنم
و اینکه کنترل بهتری برای اینکار که مد نظر من هست وجود داره؟

hamid_shrk
شنبه 19 آذر 1390, 16:44 عصر
کد گریدتون رو بذارید ، احتمالا باید wrap=true رو واسه ستون هاتون بزارید تا هنگامی که متن بزرگ تر شد خطتون رو بشکونه .
واسه اخبار معمولا از Repeater استفاده میکنن.

sara_aryanfar
شنبه 19 آذر 1390, 16:57 عصر
فکر کنم Repeater بهتر باشه چطوری باید اینارو بکنم که عنوان 7 خبر آخرم نمایش داده بشه و با کلیک بره به صفحه مخصوص نمایش اخبار؟ البته با Repeater

hamid_shrk
شنبه 19 آذر 1390, 17:11 عصر
این کد رو از توی یکی از پروژه هام گذاشتم ، چون CSS نداره یکم بهم ریختس:

<asp:Repeater ID="Repeater1" runat="server" >
<ItemTemplate>
<tr >
<td align="center" dir="rtl" style="height: 30px ">
<div align='right' class='ArticlCat' style="margin: 0px; width: 730px; height: 30px;">
<h1 align='right' style='margin-top: 5px; padding-right: 5px;' >
<asp:LinkButton ID="lnktitle" Text='<%# Eval("Title") %>' PostBackUrl='<%#"InformationDetail.aspx?NTitle="+Eval("Title") %>' runat="server" CssClass="link"></asp:LinkButton></h1>
</div>

</td>
</tr>
<tr >
<td align="center" dir="rtl" valign="top">
<div align="right" style="background-color: #FFFFFF;border: thin solid #C0C0C0; margin: 0px; width: 750px; height: 100%; position: relative; vertical-align: top;">

<div align="right" style="height: 100px; padding-right: 5px; padding-left: 5px; vertical-align: top;">
<table style="width: 100%; height: 100%">
<tr>
<td align="center" style="width: 100px; height: 100px" valign="middle">
<asp:Image CssClass="opacity" ID="ImgNews" runat="server" Imageurl='<%# "~/Image/DBImages/News/"+ Eval("NImage") %>' Height="90px" Width="90px" />
</td>
<td align="right" valign="top" class="Text">
<asp:Label ID="lbltext" runat="server" Text='<%# Eval("AbstractText2") %>' ></asp:Label>
</td>
</tr>
</table>
</div>

<hr style="width: 100%; color: #3399FF; background-color: #3399FF;" size="1" />
<div align="right" style="height: 30px; position: relative;">
<table style="width: 100%;">
<tr>
<td>
<asp:Label ID="Label7" runat="server" Text="تاریخ ارسال :" Width="70px" ForeColor="#0066FF"></asp:Label>
</td>
<td style="width: 50%; padding-right: 5px;">
<asp:Label Text='<%# Eval("Regdate") %>' ID="lblRegdate" runat="server" ForeColor="#FF6600"></asp:Label>
</td>
<td>
<asp:Label ID="Label3" runat="server" Text="تعداد بازدید :" Width="70px" ForeColor="#0066FF"></asp:Label>
</td>
<td style="width: 50%; padding-right: 5px;">
<asp:Label Text='<%# Eval("BAzdid") %>' ID="Label4" runat="server" ForeColor="#FF6600"></asp:Label>
</td>
<td align="right"
style="background-image: url('Image/BodyPic/Arrow-r.gif'); background-repeat: no-repeat; background-position: right center; padding-right: 18px;">
<asp:LinkButton ID="lnlNext" Text="ادامه مطلب ..." PostBackUrl='<%#"InformationDetail.aspx?NTitle="+Eval("Title") %>' runat="server" CssClass="link" Width="100px"></asp:LinkButton>
</td>
</tr>
</table>
</div>
</div>
</td>

</tr>
</ItemTemplate>
</asp:Repeater>

این الگوریتم هم خودم نوشتم برای اینه که پیج بندی کنه :

protected void Page_Load(object sender, EventArgs e)
{

PagedDataSource pds = new PagedDataSource();
pds.DataSource = ObjectDataSource1.Select();
pds.AllowPaging = true;
pds.PageSize =10;
int cur;
int count=0;

decimal PdsCount = Convert.ToDecimal(pds.DataSourceCount) / Convert.ToDecimal(pds.PageSize);
s = PdsCount.ToString();
String[] test = s.Split('.');
if (test.Count() >1 && Convert.ToDecimal(test[1]) > 0)
PdsCount = Convert.ToDecimal(test[0]) + 1;

if (Request.QueryString["page"] != null)
cur = Convert.ToInt32(Request.QueryString["page"]);
else
cur = 1;
pds.CurrentPageIndex = cur-1 ;
LitPage.Text += "<a class='Repeater'>صفحه " +Persia.Number.ConvertToPersian(Convert.ToString(p ds.CurrentPageIndex+1)) + " از " +Persia.Number.ConvertToPersian( Convert.ToString(PdsCount)) + "</a>";

if (pds.CurrentPageIndex+1 > 1)
{
LitPage.Text += "<a class='Repeater' href='" + Request.CurrentExecutionFilePath + "?page=" + 1 + "'>ابتدا</a>";
LitPage.Text += "<a class='Repeater' href='" + Request.CurrentExecutionFilePath + "?page=" + Convert.ToString(pds.CurrentPageIndex ) + "'><</a>";
LitPage.Text += "<P class='PReap'>.......</p>";
}

for (int i = 1; i <= PdsCount; i++)
{
if (i >= pds.CurrentPageIndex )
{

if (count < 3)
{
count++;
if (pds.CurrentPageIndex+1 == i)
LitPage.Text += "<a class='RepeaterSelected' href='" + Request.CurrentExecutionFilePath + "?page=" + i + "'>" + Persia.Number.ConvertToPersian(i) + "</a>";
else
LitPage.Text += "<a class='Repeater' href='" + Request.CurrentExecutionFilePath + "?page=" + i + "'>" + Persia.Number.ConvertToPersian(i) + "</a>";

//}
//else
//{

// if (i == pds.DataSourceCount)
// LitLast.Text += "<a class='Repeater' href='" + Request.CurrentExecutionFilePath + "?page=" + i + "'>" + i + "</a>";
//}
}
}
}
if (pds.CurrentPageIndex+1 != PdsCount)
{
LitPage.Text += "<P class='PReap'>.......</p>";
LitPage.Text += "<a class='Repeater' href='" + Request.CurrentExecutionFilePath + "?page=" + Convert.ToString(pds.CurrentPageIndex + 2) + "'>></a>";

LitPage.Text += "<a class='Repeater' href='" + Request.CurrentExecutionFilePath + "?page=" + Convert.ToString(PdsCount) + "'>انتها</a>";
}


Repeater1.DataSource = pds;
Repeater1.DataBind();
}


pds.PageSize

تعداد رکورد هایی رو که نمایش میخواید بدید تعیین میکنه.

sara_aryanfar
شنبه 19 آذر 1390, 17:48 عصر
شرمنده اما از هیچ جاش سر درنیاوردم ممکنه یه کد ساده تر بدین

hamid_shrk
شنبه 19 آذر 1390, 18:01 عصر
مثلا تو این کد:

<asp:LinkButton ID="lnktitle" Text='<%# Eval("Title") %>' PostBackUrl='<%#"InformationDetail.aspx?NTitle="+Eval("Title") %>' runat="server" CssClass="link"></asp:LinkButton>

<%# Eval("Title") %>
Title عنوان فیلدیه که از دیتا بیس میخونیم.
InformationDetail.aspx آدرس صفحه ای هست که قراره جزئیات اخبار توشه و با کوئری استرینگ NTitle میشه تو اون صفحه خبر مورد نظر رو پیدا کرد.
در ضمن باید با یک sqldatasource 7 خبر آخرتون رو از دیتا بیس بخونید
تو پیج لودتون فعلا فقط این کد رو بنویسید و از اون الگوریتم بعدا استفاده کنید :

pds1.DataSource = SqlDataSource1.SelectCommand;
pds1.AllowPaging = true;
pds1.PageSize = 20;
SqlDataSource1.DataBind();

یکم بیشتر تلاش کنید خیلی سادس، ببخشید وقت نکردم سادش کنم.