PDA

View Full Version : گفتگو: بهترین ابزار برای نمایش محتوای سایت املاک با تعداد فیلدهای زیاد چیست؟



پیام حیاتی
سه شنبه 12 آبان 1394, 22:59 عصر
سلام
من در جدول املاک 27 فیلد دارم ، کاربر با جستجوی شهر اهواز مشخصات املاک ثبت شده که هر کدام دارای 27 فیلد هستند را می خواهد ببیند.
از گرید استفاده کنم OverFlow را باید Scroll بدم که از نظر طراحی نمره خوبی نمی گیرد.
ریپیتر هم جستجو کردم بیشتر برای نمایش فیلدهایی با تعداد کم هست ، ویرایش در آن هم آسان نیست.
به نظر شما از چه ابزاری برای نمایش محتوا استفاده کنم؟
تشکر

aminmousavi
چهارشنبه 13 آبان 1394, 01:23 صبح
سلام دوست عزیز .
بهترین ابزار برای نمایش اینجور اطلاعات که باید بشه حداقل با چشم گزینه ها رو راحت مقایسه کرد . همون دیتاگریده اما نه دیتاگرید خود asp بلکه با html خودتون بسازین.
شاید فیلدهای اضافه ای هم داشته باشین ، اگه فیلدرو بگین شاید بشه به یک جمع بندی رسید که میشه چیزی رو حذف کرد یا به گونه ای نمایش داد که جای زیادی نگیره .

پیام حیاتی
چهارشنبه 13 آبان 1394, 01:42 صبح
چطور با html بسازیم؟فیلدها شامل: نام منطقه ، تعداد اتاق ها ، تعدا حمام و دستشویی ، تعداد اتاق خواب ، طبقه ،سیستم سرمایش ، سیستم گرمایش ، متراژ،قیمت کل ، قیمت رهن و اجاره ، حق بنگاه داری ، ادرس ، توضیحات ، گواهی ضدزلزله،گواهی سطح مصرف انرژی،تصویر اول از خانه ، تصویر دوم هستند.

notlikeothers
چهارشنبه 13 آبان 1394, 08:40 صبح
درود.من واسه این مواقع میام چند تا فیلد مهم رو نمایش میدم بعد یه لینک میزارم تو جدول (اطلاعات بیشتر) که به صورت fancyboxهستش اونجا کل فیلد ها نمایش میدم.فک نکنم خوشایند باشه 27 فیلد کاربر تو صفحه اصلی ببینه

پیام حیاتی
چهارشنبه 13 آبان 1394, 11:47 صبح
درود.من واسه این مواقع میام چند تا فیلد مهم رو نمایش میدم بعد یه لینک میزارم تو جدول (اطلاعات بیشتر) که به صورت fancyboxهستش اونجا کل فیلد ها نمایش میدم.فک نکنم خوشایند باشه 27 فیلد کاربر تو صفحه اصلی ببینهآموزش یا نمونه کدی برای این حالت دارید؟

پیام حیاتی
چهارشنبه 13 آبان 1394, 13:37 عصر
قسمتی از اطلاعات ملک رو با استفاده از کدنویسی (نه ویزارد )در گرید نمایش می دم ، یک ستون HyperLinkField به گرید با عنوان اطلاعات بیشتر اضافه کردم ، حالا چکار باید کنم که با کلیک بر روی HyperLinkField اطلاعات مربوط به همون رکورد در صفحه دیگر یا پاپ آپ نمایش داده شود؟

136477

نمیدونم چرا ستون ایجاد شده به جای قرار گرفتن در انتهای جدول گرید رفته ابتدا؟

notlikeothers
پنج شنبه 14 آبان 1394, 08:35 صبح
اول اینکه گرید بزار تو divو rtlکن واسه اینکه بیاد اخر.بعدش به لینک یه commandname بده و تو رویداد OnRowCommand ازش استفاده کن:


protected void OnRowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName=="test")
{
Response.Redirect("");
}
}

پیام حیاتی
پنج شنبه 14 آبان 1394, 13:52 عصر
اول اینکه گرید بزار تو divو rtlکن واسه اینکه بیاد اخر.بعدش به لینک یه commandname بده و تو رویداد OnRowCommand ازش استفاده کن:


protected void OnRowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName=="test")
{
Response.Redirect("");
}
}

گرید rtl هست اگر ltr کنم اطلاعات بیشتر در قسمت آخر قرار می گیرد اما سایر ستون ها نیز چپ چین می شوند که باید این بار از چپ به راست اصلاح بشن!
HyperLinkField ، این آیتم CommandName نمی گیرد.

136494

لیبل CommandName می گیرد اما برای اضافه کردن ستون به گرید کدام آیتم رو انتخاب کنم:

136495
بدین شکل قرار دادم اما نتیجه نداد :


<EmptyDataTemplate>
<asp:Label ID="Label1" runat="server" Text="Label" CommandName="lool"></asp:Label>
</EmptyDataTemplate>

،


protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "lool")
{
Response.Redirect("Contact.aspx");
}
}

پیام حیاتی
پنج شنبه 14 آبان 1394, 20:27 عصر
بروزرسانی...

notlikeothers
جمعه 15 آبان 1394, 11:31 صبح
از linkbuttom استفاده کن.یه لینک اموزش هست خیلی شبک و مجلسی توضیح داده
http://www.aspsnippets.com/Articles/ASPNet-GridView---Get-CommandName-and-CommandArgument-of-Button-clicked-in-RowCommand-and-Click-events.aspx

پیام حیاتی
جمعه 15 آبان 1394, 15:28 عصر
از آموزش فوق استفاده کردم اما زمانی که OnRowCommand را به GridView اضافه می کنم خطای زیر رو دارم :


Error 1 'ASP.default_aspx' does not contain a definition for 'OnRowCommand' and no extension method 'OnRowCommand' accepting a first argument of type 'ASP.default_aspx' could be found (are you missing a using directive or an assembly reference?) D:\Web-Design\More\Default.aspx 13



در DataTextField ابزار Button چه مقداری را باید وارد کنم؟!
کدهای دیزاین :


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


<asp:GridView ID="GridView1" runat="server" OnRowCommand="OnRowCommand">
<Columns>
<asp:ButtonField CommandName = "ButtonField" DataTextField = "am_id" ButtonType = "Button"/>
</Columns>
</asp:GridView>



</div>
</form>

سی شارپ :


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;


public partial class _Default : System.Web.UI.Page
{
SqlConnection con = new SqlConnection("Data Source=localhost; Initial Catalog=Home; Integrated Security=TRUE ");
protected void Page_Load(object sender, EventArgs e)
{
con.Open();
SqlDataAdapter da = new SqlDataAdapter("select am_id as 'ردیف' , am_mantaghe as 'منطقه' , am_title_home as 'عنوان' , am_metraj as 'متراژ' , am_tabaghe as 'طبقه' , am_build_year as 'سال ساخت' , am_eghdam as 'اقدام' , am_price as 'قیمت کل' from T_Amlak where am_city= 'اهواز' ", con);
DataSet ds = new DataSet();
da.Fill(ds, "Temp");
GridView1.DataSource = ds;
GridView1.DataMember = "Temp";
GridView1.DataBind();
con.Close();
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow gvRow = GridView1.Rows[index];
}
}

notlikeothers
شنبه 16 آبان 1394, 08:21 صبح
از آموزش فوق استفاده کردم اما زمانی که OnRowCommand را به GridView اضافه می کنم خطای زیر رو دارم :


Error 1 'ASP.default_aspx' does not contain a definition for 'OnRowCommand' and no extension method 'OnRowCommand' accepting a first argument of type 'ASP.default_aspx' could be found (are you missing a using directive or an assembly reference?) D:\Web-Design\More\Default.aspx 13



در DataTextField ابزار Button چه مقداری را باید وارد کنم؟!
کدهای دیزاین :


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


<asp:GridView ID="GridView1" runat="server" OnRowCommand="OnRowCommand">
<Columns>
<asp:ButtonField CommandName = "ButtonField" DataTextField = "am_id" ButtonType = "Button"/>
</Columns>
</asp:GridView>



</div>
</form>

سی شارپ :


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;


public partial class _Default : System.Web.UI.Page
{
SqlConnection con = new SqlConnection("Data Source=localhost; Initial Catalog=Home; Integrated Security=TRUE ");
protected void Page_Load(object sender, EventArgs e)
{
con.Open();
SqlDataAdapter da = new SqlDataAdapter("select am_id as 'ردیف' , am_mantaghe as 'منطقه' , am_title_home as 'عنوان' , am_metraj as 'متراژ' , am_tabaghe as 'طبقه' , am_build_year as 'سال ساخت' , am_eghdam as 'اقدام' , am_price as 'قیمت کل' from T_Amlak where am_city= 'اهواز' ", con);
DataSet ds = new DataSet();
da.Fill(ds, "Temp");
GridView1.DataSource = ds;
GridView1.DataMember = "Temp";
GridView1.DataBind();
con.Close();
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow gvRow = GridView1.Rows[index];
}
}

از لینک باتن استفاده کن چه اصراری داری از ButtonField استفاده کنی.بعدش این کدی که گذاشتم یه مثال بود شما باید ریدایرکت کنی به یه صفحه دیگه.
در واقع کد داخل GridView1_RowCommand میشه



if (e.CommandName == "lool")
{
Response.Redirect("Contact.aspx");
}


کد سمت کلاینت هم میشه :


<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns = "false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:linkbuttom ID="lnk" runat="server" CommandName="lool" ></asp:linkbuttom >
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

پیام حیاتی
شنبه 16 آبان 1394, 16:38 عصر
از لینک باتن استفاده کن چه اصراری داری از ButtonField استفاده کنی.بعدش این کدی که گذاشتم یه مثال بود شما باید ریدایرکت کنی به یه صفحه دیگه.
در واقع کد داخل GridView1_RowCommand میشه



if (e.CommandName == "lool")
{
Response.Redirect("Contact.aspx");
}


کد سمت کلاینت هم میشه :


<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns = "false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:linkbuttom ID="lnk" runat="server" CommandName="lool" ></asp:linkbuttom >
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>


ممنون تا اینجا درست شد ، انتقال به صفحه دیگر را برای تست قرار داده بودم ، می خواهم با کلیک بر روی linkbuttom اطلاعات کامل همان رکورد نشان داده شود.مثلا در جدول ملک قیمت ، متراژ و منطقه ذکر شده حال با کلیلک بر روی linkbuttom سایر اطلاعات از جمله تصویر ، آدرس و ... نمایش داده شود.همانند دکمه توضیحات بیشتر در سایت ها.

136538

پیام حیاتی
دوشنبه 18 آبان 1394, 12:33 عصر
بروزرسانی.... .
یعنی تا حالا به این مورد بر نخوردید که ادامه مطلب محتوا را در صفحه دیگر یا پاپ آپ نمایش بدید؟!:اشتباه:

notlikeothers
دوشنبه 18 آبان 1394, 13:55 عصر
http://www.jqueryrain.com/?E9cX7DiW
شما یه سرچ fancy box یا light box بکنید کلی پلاگین خوب پیدا میکنید

پیام حیاتی
دوشنبه 18 آبان 1394, 15:54 عصر
بله درسته پاپ اپ رو با بوت استرپ هم میتونم ایجاد کنم یا اصلا لینک بدم در صفحه دیگر اما مشکل اینه که برای هر لینک مطب باید دستی کد ما بقی ان رو بنویسم . در سایت ، اگهی ها تعداد مشخصی ندارند،به همین خاطر دکمه یا لینک باتن ایجاد شده در جلوی هر مطلب یا رکورد در گرید باید اتومات اینکارو انجام بده.
اگر امکانش نیست بگید تا من اصلا تعداد فیلدها رو کم کنم بیخیال ادامه مطلب بشم.
تشکر.

anvar
دوشنبه 18 آبان 1394, 20:34 عصر
نگاه شما به مسئله عجیب و غریبه !!!

در مرحله 1 نباید تمامی اطلاعات یک ایتم (ملک) رو بطور کامل (27 فیلد) نشون بدهید(اگر قراره همه در یک صفحه نشون داده بشوند دیگر صفحه جزئیات معنایی نداره). در این بخش فقط اصلی ترین مشخصات ملک مورد نظر کفایت می کنه(پس نیازی به اسکرول افقی ندارید).

بهتره در این مرحله اطلاعات رو بصورت تیمپلیت نشون بدید نه لیست وار (مثل سایت شیپور ) ( با توجه به داشتن تصویر احتمالی این حالت نمایشی خیلی زیباتر میشه)

برای نمایش جزئیات بهتره از صفحات مجزا و بدون پآپ آپ استفاده کنید (به این دلیل که شما در هر زمان فقط 1 پآپ آپ می تونید داشته باشید اما اگر صفحات بصورت مجزا باز بشوند تعداد آنها نامحدود خواهد بود و کاربر می توانید هر کدام از املاک مورد نظر خود را در یک صفحه جدید باز نماید) یک راه دیگر برای همچنین موردی حالت مستر - دیتیل هست (البته این روش بیشتر برای سیستم جدولی یا لیست وار استفاده میشه اما اگر از سیستم گرافیکی مناسب + جی کوئری و اندکی اجاکس استفاده کنید چیزی خوبی از کار در می آید)

برای لینک به صفحه جزئیات هم نیازی به دکمه های سمت سرور نیست فقط یک لینک معمولی به صفحه مورد نطر + کد ملک کفایت می کنه و نیازی به این هم پردازش و رویداد نیست.

اگر قرار این سایت حجم زیادی از اطلاعات رو پردازش کنه و کاربران آن زیاد هستند - استفاده از کنترل های asp.net را فراموش کنید سعی کنید تمامی جداول را بصورت دستی با html بسازید

پیام حیاتی
سه شنبه 19 آبان 1394, 01:05 صبح
نگاه شما به مسئله عجیب و غریبه !!!

در مرحله 1 نباید تمامی اطلاعات یک ایتم (ملک) رو بطور کامل (27 فیلد) نشون بدهید(اگر قراره همه در یک صفحه نشون داده بشوند دیگر صفحه جزئیات معنایی نداره). در این بخش فقط اصلی ترین مشخصات ملک مورد نظر کفایت می کنه(پس نیازی به اسکرول افقی ندارید).

بهتره در این مرحله اطلاعات رو بصورت تیمپلیت نشون بدید نه لیست وار (مثل سایت شیپور ) ( با توجه به داشتن تصویر احتمالی این حالت نمایشی خیلی زیباتر میشه)

برای نمایش جزئیات بهتره از صفحات مجزا و بدون پآپ آپ استفاده کنید (به این دلیل که شما در هر زمان فقط 1 پآپ آپ می تونید داشته باشید اما اگر صفحات بصورت مجزا باز بشوند تعداد آنها نامحدود خواهد بود و کاربر می توانید هر کدام از املاک مورد نظر خود را در یک صفحه جدید باز نماید) یک راه دیگر برای همچنین موردی حالت مستر - دیتیل هست (البته این روش بیشتر برای سیستم جدولی یا لیست وار استفاده میشه اما اگر از سیستم گرافیکی مناسب + جی کوئری و اندکی اجاکس استفاده کنید چیزی خوبی از کار در می آید)

برای لینک به صفحه جزئیات هم نیازی به دکمه های سمت سرور نیست فقط یک لینک معمولی به صفحه مورد نطر + کد ملک کفایت می کنه و نیازی به این هم پردازش و رویداد نیست.

اگر قرار این سایت حجم زیادی از اطلاعات رو پردازش کنه و کاربران آن زیاد هستند - استفاده از کنترل های asp.net را فراموش کنید سعی کنید تمامی جداول را بصورت دستی با html بسازید
عجب..
دوست عزیز تمام بحث ما هم از ابتدا سر همین موضوع هست که همه اطلاعات نمایش داده نشن در ابتدای کار ، به همین خاطر 27 فیلد رو کاهش دادم به 10 فیلد در صفحه ابتدایی 5 فیلد در گرید نمایش داده می شود یه ستون در گرید اضافه و در آن لینک باتن قرار دادیم حالا روبروی هر آگهی ثبت شده یک لینک باتن با متن بیشتر (More) وجود داره ، می خوام زمانی که روش کلیک شد ما بقی اطلاعات یا همون 5 فیلد دیگر نمایش داده شود.خلاص.
آگهی های املاک را من ثبت نمی کنم تعدادشون هم مشخص نیست ، بنگاه داران به عنوان نماینده هر روز ثبت می کنن ، نمیشه که دستی برای هر رکوردی که اضافه میشه یک label و صفحه ایجاد کرد و کد نوشت.

aminmousavi
سه شنبه 19 آبان 1394, 01:49 صبح
سلام پیام جان ، بنده نظر آقای anvar رو قبول دارم ، اما اگر تصمیم داری به این شکل کار کنی که چند فیلد فقط نمایش داده بشه و بقیه با کلیک بر روی more نمایش داده بشه .
پیشنهاد میکنم اصلا از gridview خود microsoft استفاده نکن ، از کامپوننت دیگه ای هم استفاده نکن ، چون همه ی اینها محدودیت داره . همانطور که دوست عزیزمون فرمودن باید فقط خود با html دیتاگریدت رو بسازی و صفحه بندی کنی و ...

anvar
سه شنبه 19 آبان 1394, 09:17 صبح
چیزی که مد نظر من بود تقریبا شبیه به تصویر زیره (البته برای صفحه بندی از سیستم تک صفحه ای استفاده کنید چون نیازی نیست کاربر بین صفحات 1 و 2 و ... جابجا بشه, لذا ایتم های جدید به انتهای صفحه اضافه بشن - این کار دو مزیت داره تمامی ایتم هایی که لود شدند در دید کاربر هستن و نیازی به باز کردن صفحه جدید نمیشه )

http://s3.picofile.com/file/8221940984/2.jpg

پیام حیاتی
سه شنبه 19 آبان 1394, 16:03 عصر
چیزی که مد نظر من بود تقریبا شبیه به تصویر زیره (البته برای صفحه بندی از سیستم تک صفحه ای استفاده کنید چون نیازی نیست کاربر بین صفحات 1 و 2 و ... جابجا بشه, لذا ایتم های جدید به انتهای صفحه اضافه بشن - این کار دو مزیت داره تمامی ایتم هایی که لود شدند در دید کاربر هستن و نیازی به باز کردن صفحه جدید نمیشه )

http://s3.picofile.com/file/8221940984/2.jpg
ممنون تصویر خیلی کمک کرد ، من از یک Extension مدیریت و ایجاد سایت املاک الگو گرفتم که خیلی از فیلدهای آن برای کشور ما اضافی هستند از جمله گواهینامه انرژی ، ضد زلزله و ... ، با حذف آنها دیگر scroll نمی خورد.
از تمامی دوستانی که همراهی و کمک کردند ممنونم.:قلب: