ورود

View Full Version : سوال: محدود کردن عرض gridview و ایجاد scroll عمودی



arash69
چهارشنبه 20 فروردین 1393, 23:32 عصر
سلام به همگی.
وقتی که محتویات یک خانه از gridview بیش تر از حد میشه؛ شکل نامناسبی در صفحه (به وجود آمدن scroll عرضی) ایجاد میشه که میخواستم بپرسم:
آیا راهی هست که این بیشتر از حد شدن محتوا، به صورت scroll عمودی توی صفحه دیده بشه؟

ممنون میشم راهنمایی کنید.

mRizvandi
پنج شنبه 21 فروردین 1393, 00:44 صبح
به ستونهای گریدویو پهنا بدید تا از مقدار صفحه بیشتر نشه.


<asp:BoundField DataField="..." HeaderText="..." ItemStyle-Width="140" />

arash69
پنج شنبه 21 فروردین 1393, 10:33 صبح
به ستونهای گریدویو پهنا بدید تا از مقدار صفحه بیشتر نشه.


<asp:BoundField DataField="..." HeaderText="..." ItemStyle-Width="140" />



ممنون از راهنمایی تون، اما راستش با وجود تعیین کردن عرض برای هریک از ستون های gridview، باز هم از میزان عرض تعیین شده در CssClass برای gridview بیش تر می شود.
property دیگری رو هم بایستی تنظیم کنم؟

mRizvandi
پنج شنبه 21 فروردین 1393, 10:56 صبح
پهنای خود گرید رو می تونید هم با خصوصیت width و هم با css تنطیم کنید.
اما برای پهنای هر ستون باید به خود ستون پهنا بدید و این کار رو با ItemStyle-Width انجام بدید. در آخر هم حساب کنید که کل ستونها جمعشون از پهنای گرید بیشتر نشه. چون گرید در زمان اجرا به جدول تبدیل میشه، سلولها اولویت به خود جدول دارند.
نکته بعدی اینه که اگر دیتای خاصی مثل یک عکس رو در گرید قرار بدید، باید پهنای خود عکس رو هم تعیین کنید در غیر این صورت عکس باعث میشه سلول جدول به اندازه اون تغییر اندازه پیدا کنه.
در آخر اگر برای ستونها پهنا تعریف کردید ولی بازهم بزرگتره، در مرورگر بررسی کنید که کدام ستون باعث تغییر سایز جدول شده. می تونید از برنامه های گرافیکی برای اندازه گیری پیکسلی استفاده کنید.

arash69
پنج شنبه 21 فروردین 1393, 11:41 صبح
راستش همه ی این چیزایی که گفتین رو رعایت می کنم؛ اما نمی دونم باز مشکل کار کجاست!
اگر میشه لطفا کدهای زیر رو یه نگاه بندازین شاید چیزی رو جا میندازم.

کد aspx.


<asp:GridView runat="server" ID="orders_table" AutoGenerateColumns="false" HorizontalAlign="Center" CellPadding="2" CssClass="gridMain" DataKeyNames="id">
<RowStyle CssClass="gridRow" />
<SelectedRowStyle CssClass="gridSelectedRow" />
<HeaderStyle CssClass="gridHeader" />
<Columns>
<asp:BoundField DataField="id" Visible="false" />
<asp:BoundField DataField="name" HeaderText="نام مشتری" ItemStyle-Width="50" />
<asp:BoundField DataField="phone" HeaderText="شماره تماس" ItemStyle-Width="50" />
<asp:BoundField DataField="addr" HeaderText="آدرس" ItemStyle-Width="50" />
<asp:BoundField DataField="subj" HeaderText="موضوع" ItemStyle-Width="50" />
<asp:BoundField DataField="explanation" HeaderText="توضیحات" ItemStyle-Width="100" />
<asp:TemplateField HeaderText="حذف" ItemStyle-Width="30">
<ItemTemplate>
<asp:CheckBox ID="checkRemove" ClientIDMode="Static" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>



کد css.

.gridMain
{border:1px solid gainsboro;
background-color:#333333;
width:600px;
font-size:12px;
margin-top:5px;}


.gridRow
{background-color:#FFFAFA;
text-align:center;}


.gridSelectedRow
{background-color:#E6E6FA;}


.gridHeader
{background-color:#ADD8E6;
font-weight:bold;
text-align:center;}




پ.ن: هیچ کدام از ستون ها، دقیقا" اون عرض تخصیص داده شده را توی مرورگر پیدا نمیکنند.

mRizvandi
پنج شنبه 21 فروردین 1393, 12:16 عصر
پیشنهاد می کنم اگر 600 پیکسل پهنا دارید، میزان پهنای هر ستون رو روی 100 بذارید و ستون آخری که توضیحات هست رو کلا حذف کنید.
مقدار 50 خیلی کمه شاید کلمات توش جا نمیشن و باعث میشن سلول جدول بزرگ بشه.
وقتی برای یک ستون مقدار پهنا تعیین نکنید، هر چه از پهنای گرید باقی بمونه به اون اختصاص داده میشه که با توجه به شرایط اندازه جدول بهترین حالت هست.
مورد آخر، شاید استایلهایی دیگه ای در css داره پهنای سلولهای جدول رو تغییر میده.
حتما در مرورگر با استفاده از Developers Tools (F12) چک کنید که چه استایلهایی به سلولها رسیده.

arash69
پنج شنبه 21 فروردین 1393, 12:33 عصر
پیشنهاد می کنم اگر 600 پیکسل پهنا دارید، میزان پهنای هر ستون رو روی 100 بذارید و ستون آخری که توضیحات هست رو کلا حذف کنید.
مقدار 50 خیلی کمه شاید کلمات توش جا نمیشن و باعث میشن سلول جدول بزرگ بشه.
وقتی برای یک ستون مقدار پهنا تعیین نکنید، هر چه از پهنای گرید باقی بمونه به اون اختصاص داده میشه که با توجه به شرایط اندازه جدول بهترین حالت هست.
مورد آخر، شاید استایلهایی دیگه ای در css داره پهنای سلولهای جدول رو تغییر میده.
حتما در مرورگر با استفاده از Developers Tools (F12) چک کنید که چه استایلهایی به سلولها رسیده.

ولی خب راستش ستون توضیحات لازم هست تقریبا"؛ نمیشه کاری کرد که بجای اضافه شدن به عرض سلول، به ارتفاعش افزوده بشه؟

arash69
پنج شنبه 21 فروردین 1393, 12:38 عصر
سپاس از توضیحات و راهنماییتون.
راستش مشکلی که بود؛ به این خاطر بود که بنده صرفا" برای تست کردن سلول مورد نظر، یک سری متن رو پشت سر هم و بدون space کپی کرده بودم؛
همین امر هم باعث میشد تا برای نمایش اون کلمه ی طویل!!! سلول عرضش اضافه بشه؛ که با وجود space بین کلمات این مشکل دیگر وجود ندارد.

kohyar
پنج شنبه 21 فروردین 1393, 15:14 عصر
عزیزم گرید ویو رو توی یک کامپوننت Panel بزار و به پنل حداکثر پهنا بده. اینطوری دیگه خیالت راحت میشه که پهنای گرید از پهنای پنل بیرون نمیزنه. البته خصوصیت اسکرول Panel رو هم تنظیم کن که اگر پهنای گرید بیشتر شد پائین پنل اسکرول افقی بخوره