PDA

View Full Version : آموزش: شفارشی کردن GridView



bomb23
چهارشنبه 02 مرداد 1392, 15:10 عصر
برای شروع کار ابتدا یک GridView در صفحه aspx قرار داده و آن را Bind نمایید ، وقتی صفحه را در مرورگر مشاهده کنید باید تمامی سطر ها وستون های جدول شما در کنترل GridView نمایش داده شود .
معمولا اولین چیزی که مورد نیاز است ، کم و زیاد کردن ستون های GridView و تغییر نام آن ها است ، این کار بسیار ساده است کافیست روی مثلث کوچک فوقانی کنترل GridView کلیک کرده و گزینه Edit Columns را انتخاب کنید (یا وارد Properties این کنترل شده و سپس بخش Columns را انتخاب نمایید) :
http://ciba.netau.net/up/d9766a69b764.jpg
پنجره ای مشابه پنجره فوق برای شما گشوده خواهد شد ، قبل از هرچیز گزینه Auto-Geneate Fields را بدون علامت کنید (این کار باعث می شود همه ستون ها به صورت خودکار نمایش داده نشوند) ، سپس گزینه BoundField را از جعبه بالا سمت چپ (Available Fields) انتخاب کرده و دکمه Add را بفشارید تا یک BoundField به بخش Selected Fields اضافه گردد (در مورد Template Field هم به وفور بحث خواهیم کرد ، سایر فیلد ها کاربرد زیادی ندارند) ، اکنون BoundField اضافه شده در Selected Fields را انتخاب کرده تا Property ها در سمت راست ظاهر شوند .
برای تنظیم نام ستون خاصیت Header text را وارد نمایید (در این بخش هر نام دلخواهی میتوانید وارد کنید) ، برای اتصال این فیلد به ستون مورد نظر در بانک اطلاعاتی خاصیت DataField را تنظیم کنید ، دقت نمایید که نامی که در این بخش وارد می کنید باید با نام فیلد شما در جدول بانک اطلاعاتی یکسان باشد ، سپس به همین صورت سایر ستون های مورد نظر را نیز اضافه نموده و دکمه OK را کلیک نمایید ، اکنون GridView فقط ستون های مورد نظر شما را نمایش خواهد داد .
کنترل GridView تنظیمات زیادی برای تغییر ظاهر دارد ، میتوانید این تنظیم را در Properties و سپس Styles تغییر دهید ، همچنین میتوانید از فرمت های آماده نیز استفاده کنید برای اینکار روی مثلث کنار GridView کلیک کرده و گزینه Auto Format را انتخاب کرده و از بین فرمت های آماده یکی را برگزینید .
هنگامی که هیچ رکوردی در جدول بانک اطلاعاتی شما وجود نداشته باشد GridView نمایش داده نخواهد شد ، میتوانیم متنی جهت اطلاعات کاربر از وجود نداشتن اطلاعات نمایش دهیم ، برای اینکار روی GridView کلیک راست کرده گزینه Edit Template و سپس EmptyData Template را انتخاب کنید
ا این عمل GridView تغییر حالت داده و یک فضا در اختیار شما قرار داده می شود ، شما میتوانید در این فضا متن مورد نظر یا هر عنصر دیگری را قرار دهید :
http://ciba.netau.net/up/01e5bacd6657.jpg
سپس دوباره روی GridView در همین حالت کلیک راست کرده و گزینه End Template Editing را انتخاب کنید تا GridView به حالت اولیه خود بازگردد ، از این پس در صورت خالی بودن GridView متن فوق نمایش داده خواهد شد .
همانطور که تا کنون متوجه شده اید GridView اطلاعات را به صورت سطری و ستونی همانند یک جدول نمایش می دهد ، ولی آیا میتوان نحوه نمایش را به صورت دیگری نیز تغییر داد ؟
جواب مثبت است ، این کنترل قابلیت های زیادی داشته و میتوان از آن برای نمایش اطلاعات به اشکال گوناگون استفاده کرد ، برای روشن شدن مطلب به چند مثال زیر توجه کنید :
1- در صفحه اول همین سایت برای نمایش آخرین مقالات (سمت چپ صفحه) از کنترل GridView استفاده شده ، همانطور که میبینید نحوه نمایش به صورت جدولی (سطری و ستونی ) نمی باشد
2- وبلاگ ها : برای نمایش مطالب درج شده در وبلاگ ها که به صورت زیر هم نمایش داده می شوند هم میتوان از GridView استفاده کرد
3- فروم ها : برای نمایش مطالب درج شده در تاپیک های تالار های گفتگو نیز میتوانید از Gridview استفاده کنید .
و...
اکنون سوال اینجاست که به چه صورت GridView به این شکل تبدیل شده اند ؟
این کار به وسیله Template Fields انجام می شود ، یعنی به جای Bound Field (که در ابتدای مقاله با آن آشنا شدیم) از Template Field استفاده می کنیم .
برای این منظور یک GridView جدید به صفحه اضافه کنید و آنرا Bind نمایید ، سپس وارد Edit Columns شده و این بار از بخش Available Fields یک Template Field اضافه نموده سپس Header Text آن را تنظیم نمایید ، همانطور که ملاحظه می کنید Template Field خاصیتی به نام DataField ندارد ( ستون از طریق کلیدواژه Eval که در زیر با آن آشنا خواهیم شد به فیلد منتاظر در جدول بانک اطلاعاتی متصل خواهد شد )
سپس دکمه OK را کلیک نمایید ، اکنون باید Template خود را ایجاد کنید ، برای همین روی GridView کلیک راست کرده و گزینه Edit Template و سپس فیلد مربوطه را انتخاب کنید
با انتخاب این گزینه GridView تغییر حالت داده و 5 فضا به شما داده می شود که فعلا فقط Item Template را بررسی خواهیم کرد ، نکته جالب اینجاست که شما میتوانید هر عنصر دلخواهی داخل این فضا (که به آن Template می گوییم) قرار دهید مثلا یک جدول ، Label ، یک DropDownList و ....
قصد دارم چیزی شبیه صفحه اول همین سایت را شبیه سازی کنم ، برای این منظور ابتدا یک Table با عرض 100% داخل این فضا ایجاد می کنم با 1 ستون و دو سطر ، سپس در سطر اول یک Label و در سطر دوم هم یک Label دیگر قرار می دهم ، روی مثلث Label بالایی کلیک کرده و گزینه Edit Data Bindings را انتخاب نمایید ، سپس در پنجره بازشده از سمت چپ خاصیت Text را انتخاب کرده و در سمت راست در قسمت Code Expression کد زیر را وارد کرده و دکمه OK را بفشارید (به این عمل بایند کردن یک کنترل در GridView می گوییم) :


Eval("YourFieldName")


البته دقت کنید به جای YourFieldName باید نام فیلد مورد نظر در جدول بانک اطلاعاتی خودتان را بنویسید ، ما توسط این روش به GridView می گوییم که مقادیر موجود در فیلد مورد نظر در بانک اطلاعاتی را در خاصیت Text کنترل Label قرار دهد
http://ciba.netau.net/up/efb80f630cce.jpg
این عمل را برای Label پایینی هم انجام دهید و آنرا نیز به یکی دیگر از فیلدهای بانک اطلاعاتی بایند کنید ، سپس روی Gridview کلیک راست کرده و گزینه End Template Editing را کلیک نمایید
اگر مایل هستید که متن Header نمایش داده نشود روی GridView کلیک راست نموده گزینه Properties را انتخاب کرده و سپس گزینه ShowHeader در قسمت Appearance را False نمایید ، همچنین برای از بین بردن خط دور هر رکورد گزینه BorderWidth را 0 وارد نمایید .
همچنین برای اینکه بین هر رکورد فاصله داشته باشیم هم به سراغ CellSpacing و CellPading در قسمت Layout همین پنجره (properties) بروید ، با افزایش مقادیر نام برده شاهده افزایش فاصله رکورد ها خواهید بود ، اگر بخواهید GridView کل فضا را پوشش دهد یعنی 100% صفحه باشد میتوانید خاصیت Width آن را برابر 100% قرار دهید.
همانطور که ملاحظه می کنید نحوه نمایش GridView کامل تغییر کرد ، شما میتوانید با همین روش به شکل دلخواه اطلاعات را نمایش دهید .

bomb23
چهارشنبه 02 مرداد 1392, 15:32 عصر
برای حذف یک خبر قبل از هرچیز نیاز است که یک دکمه برای حذف در کنار هر خبر قرار داده شود ، شما میتوانید این دکمه را از نوع Button یا LinkButton انتخاب کنید ، این کنترل را میتوانید در همان TemplateField که عنوان و خلاصه خبر وجود داشتند قرار داده یا یک TemplateField جدید برای اینکار اضافه کنید .
بنده یک TemplateField جدید اضافه کردم ، سپس روی GridView کلیک راست کرده گزینه Edit Template را انتخاب کنید ، این بار Column 1 را برگزینید تا Template Field جدید را ویرایش کنیم ، در بخش Item Template یک LinkButton قرار داده و خاصیت Text آن را "حذف" قرار دهید .
خاصیت CommandName را هم برابر "remove" تنظیم نمایید ، این کار باعث می شود با کلیک بر روی لینک "حذف" رویداد RowCommand کنترل GridView فراخوانی شود و ما در این رویداد عملیات حذف خبر را انجام خواهیم داد .
نکته : خاصیت CommandName به بزرگی و کوچکی حروف حساس می باشد بنابراین به نحوه نوشتن کلمات دقت کنید ، همچنین از کلمات Delete,Edit,Update,Cancel استفاده نکنید چرا که این کلمات کاربرد خاص خودشان را دارند که بعدها توضیح داده خواهد شد .
برای اینکه قبل از حذف خبر از کاربر یک سوال اطمینان پرسیده شود باید از جاوا اسکریپت استفاده کنیم ، یک روش ساده برای اینکار این است که کد زیر را در خاصیت OnClientClick لینک "حذف" بنویسید :
return confirm('آیا از حذف این خبر اطمینان دارید؟');
تابع confirm یک تابع جاوا اسکریپت است که یک سوال را به صورت modal box روی صفحه ظاهر می کند
http://ciba.netau.net/up/872e3d47e965.jpg
سپس مثلث کنار LinkButton حذف را کلیک کرده سپس وارد Edit DataBindings شوید ، خاصیت CommandArgument را طبق شکل زیر به فیلد NewsID بایند نمایید ( برای اینکه بتوانیم یک رکورد از دیتابیس را حذف کنیم باید کد رکورد را داشته باشیم ) :
http://ciba.netau.net/up/4a9d40b0df3a.jpg
پنجره Properties لینک "حذف" به صورت زیر خواهد بود :
http://ciba.netau.net/up/f42b03a06a1b.jpg
با انتخاب End Template Editing گرید را به حال اولیه برگردانید ، سپس روی GridView کلیک راست کرده و Properties را انتخاب کنید ، در پنجره Properties آیکون را انتخاب کرده تا لیست Event های این کنترل نمایش داده شود ، همانطور که ملاحظه می کنید این کنترل Event های زیادی دارد که هر کدام کاربرد خودشان را دارند .
از میان این Event ها RowCommand کاربرد بسیار زیادی دارد ، این Event را انتخاب کرده و روی آن دبل کلیک کنید تا وارد بخش کد نویسی شوید :
http://ciba.netau.net/up/548a4ac7ad6e.jpg
اکنون میخواهیم در این رویداد عملیات حذف را انجام دهیم ، این رویداد قابلیت آن را دارد که به خاصیت CommandName و CommandArgument کنترلی که این رویداد را فراخوانی کرده (یعنی همان LinkButton حذف ) دسترسی پیدا کند
برای دسترسی به این دو مقدار از کلیدواژه e استفاده می کنیم ، e.CommandName مقدار "remove" که خودمان تنظیم کرده بودیم را به ما داده و e.CommandArgument کد خبر (NewsID) رکورد متناظر را بر می گرداند ، اکنون به صورت زیر کد نویسی می کنیم :


protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "remove")
{
int newsId = Convert.ToInt32(e.CommandArgument);



SqlConnection con = new SqlConnection("data source=(local);initial catalog=myweblog;integrated security=true");
string query = "delete from tblnews where newsid=@newsid";

SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@newsid", newsId);

con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}



قبل از هرچیز به وسیله یک شرط چک کردیم که خاصیت CommandName برابر "remove" باشد ، چرا که ممکن است ما از رویداد RowCommand برای کارهای مختلف مانند ویرایش ، به روزرسانی و... دیگر هم استفاده کرده باشیم.
سپس به وسیله e.CommandArgument مقدار NewsID را واکشی می کنیم (به خاطر بیاورید که خاصیت CommandArgument لینک حذف را به فیلد NewsID بایند کرده بودیم) ، به دلیل اینکه CommandArgument از جنس object می باشد یک تبدیل انجام دادیم و توسط متد Convert.ToInt32 آن را به Int تبدیل کردیم (دقت کنید که نمیتوان یک متغیر از جنس Object را بدون تبدیل به یک متغیر از نوع int تخصیص داد )
سپس یک Query ساده برای حذف نوشته و اجرا کردیم ، با این کار رکورد مورد نظر از بانک اطلاعاتی حذف خواهد شد ، ولی برای اینکه اطلاعات نمایش داده شده در GridView به روز شود (یعنی رکورد مورد نظر از داخل GirdView هم حذف شود) باید GridView دوباره بایند شود ، برای این منظور باید کدهایی که داخل Page_Load برای بایند کردن نوشته بودیم در اینجا دوباره تکرار کنیم ، برای جلوگیری از تکرار کد ها یک تابع ایجاد می کنیم و کد ها را داخل آن قرار می دهیم :


public void BindGridView()
{

SqlConnection con = new SqlConnection("data source=(local);initial catalog=myweblog;integrated security=true");

string query = "select * from tblnews";

SqlCommand cmd = new SqlCommand(query, con);

con.Open();

SqlDataReader dr = cmd.ExecuteReader();
GridView1.DataSource = dr;
GridView1.DataBind();

con.Close();
}



سپس هم در page_Load و هم RowCommand از این تابع استفاده می کنیم :

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGridView();
}
}



رویداد RowCommand :

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "remove")
{

int newsId = Convert.ToInt32(e.CommandArgument);



SqlConnection con = new SqlConnection("data source=(local);initial catalog=myweblog;integrated security=true");
string query = "delete from tblnews where newsid=@newsid";

SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@newsid", newsId);

con.Open();
cmd.ExecuteNonQuery();
con.Close();

BindGridView();
}
}



همانطور که ملاحظه کردید در انتها تابع BindGridView را فراخوانی کردیم .
تنها یک نکته باقی مانده است و آن هم عکس مربوط به خبر است ، برای حذف یک فایل از داخل یک پوشه به فضا نام System.IO (فضا نامی جهت کار با فایل ها) احتیاج داریم ، این فضا نام را اضافه نمایید :


using System.IO;


برای حذف یک فایل به نام فایل نیاز داریم ، در صورتی که در رویداد RowCommand فقط کد رکورد (NewsID) را داریم . راه حل این است که با یک دستور Select نام فایل را از دیتابیس با شرط کد رکورد واکشی کنیم و سپس فایل را حذف نماییم .
برای تمیزی کار یک تابع جداگانه برای اینکار مینویسیم :


public void RemovePic(int newsId)
{
SqlConnection con = new SqlConnection("data source=(local);initial catalog=myweblog;integrated security=true");
string query = "select pic from tblnews where newsid=@newsid";

SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@newsid", newsId);

con.Open();
string fileName = cmd.ExecuteScalar().ToString();
con.Close();

if (fileName != "nopic.gif")
File.Delete(Server.MapPath("Pics\\") + fileName);

}



این تابع newsId را در ورودی دریافت کرده سپس توسط متد ExecuteScaler نام فایل را دریافت می کند و در نهایت به وسیله متد File.Delete که در فضا نام System.IO وجود داشت فایل حذف خواهد شد .
دقت بفرمایید که متد Delete مسیر فیزیکی فایل را دریافت می کند بنابراین از متد Server.Mappath که در جلسه گذشته توضیح داده شد برای واکشی مسیر فیزیکی استفاده کردیم .
همچنین مشاهده می کنید که قبل از حذف فایل یک شرط گذاشتیم که نام فایل nopic.gif نباشد چرا که نمیخواهیم فایل عکس پیش فرض حذف گردد .
اکنون این تابع را در رویداد RowCommand استفاده می کنیم :


if (e.CommandName == "remove")
{
int newsId = Convert.ToInt32(e.CommandArgument);

RemovePic(newsId);

SqlConnection con = new SqlConnection("data source=(local);initial catalog=myweblog;integrated security=true");
string query = "delete from tblnews where newsid=@newsid";

SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@newsid", newsId);

con.Open();
cmd.ExecuteNonQuery();
con.Close();

BindGridView();
}



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

mahdioo12194
چهارشنبه 02 مرداد 1392, 22:58 عصر
ببخشید شما ظاهرا فقط نام عکس رو ذخیره کردید در ستون pic اونوقت موقع بایند کردن عکس نشون داده میشه؟ فکر کنم باید با آدرسش در جدول ذخیره شه؟

bomb23
چهارشنبه 02 مرداد 1392, 23:10 عصر
بله تست کنید متوجه میشد .

mahdioo12194
چهارشنبه 02 مرداد 1392, 23:59 عصر
تست کردم ولی این واسه موقعی است که عکس ها در روت پروزه باشه وگرنه چه جور عکس رو تشخیص بده تو کدوم پوشه یا شاخه است؟!!!!

bomb23
پنج شنبه 03 مرداد 1392, 13:19 عصر
منظور شما عکس دکمه حذفه یا عکس مربوط به اون خبر؟
سوالتون مبهمه یه کم بهتر بپرس لطفا.

mahdioo12194
پنج شنبه 03 مرداد 1392, 18:54 عصر
منظورم عکس مربوط به خبره؟ شما چجور نمایش می دهید چون با کد زیر معلوم میشه فقط نام عکس را در جدول ذخیره کردید!!



public void RemovePic(int newsId)
{
SqlConnection con = new SqlConnection("data source=(local);initial catalog=myweblog;integrated security=true");
string query = "select pic from tblnews where newsid=@newsid";

SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@newsid", newsId);

con.Open();
string fileName = cmd.ExecuteScalar().ToString();
con.Close();

if (fileName != "nopic.gif")
File.Delete(Server.MapPath("Pics\\") + fileName);

}

bomb23
جمعه 04 مرداد 1392, 01:02 صبح
آهان الان متوجه سوال شدم . بعله فقط آدرس عکس ذخیره میشه چون اگه خود عکسا ذخیره شن تو DB بعد ی مدت DB میترکه. ما آدرسو ذخیره میکنیم و عکسو تو اون آدرس میذاریم بعد از اون آدرس به صفحه بایند میشه.

arashnaderi
جمعه 04 مرداد 1392, 12:20 عصر
سلام
چه خوب بود منبع رو هم ذکر میکنید. چون ظاهرا مطالب از سایت http://www.how2learnasp.net کپی برداری شده. با اینکار حق مربوط به نویسنده مقاله رو رعایت میکردید
موفق باشید

bomb23
جمعه 04 مرداد 1392, 13:02 عصر
سلام دوست عزیز من یکی از admin های how2learnasp بودم.

mahdioo12194
جمعه 04 مرداد 1392, 14:03 عصر
آهان الان متوجه سوال شدم . بعله فقط آدرس عکس ذخیره میشه چون اگه خود عکسا ذخیره شن تو DB بعد ی مدت DB میترکه. ما آدرسو ذخیره میکنیم و عکسو تو اون آدرس میذاریم بعد از اون آدرس به صفحه بایند میشه.

اگه آدرسو ذخیره کردید پس چرا وقتی select زدید به pic فقط نام عکس رو برمی گردونه



string query = "select pic from tblnews where newsid=@newsid";

string fileName = cmd.ExecuteScalar().ToString();


و در آخر آدرس رو بهش اضافه کردید!!



if (fileName != "nopic.gif") File.Delete(Server.MapPath("Pics\\") + fileName);

bomb23
جمعه 04 مرداد 1392, 14:14 عصر
اینکه مطلب عجیبی نیست آخه من نمیدونم چیش برات نا مفهومه!شما یه آدرس داری با یه اسم فایل اونجاش که متغییره رو عوض میکنیم و ثابت ها رو نه!

mahdioo12194
جمعه 04 مرداد 1392, 16:21 عصر
متوجه منظور من نشدید من یکبار دیگر سوالم را واضح می پرسم!

چند تا سوال دارم
1.شما در ستون pic چه چیزی را ذخیره کردید آدرس عکس به همراه نام عکس یا فقط نام عکس؟ اگر آدرس عکس به همراه نام عکس را ذخیره کردید پس کد زیر را جه جور توضیح می دهید؟



string fileName = cmd.ExecuteScalar().ToString();


این نشان می دهد که فقط نام عکس در جدول ذخیره شده وگرنه آدرس ان هم به همراه آن select می شد ودر آخر هم لازم نبود "Pics\\" را اضافه کنید

چون آدرس درون filename است دیگه!

bomb23
جمعه 04 مرداد 1392, 17:50 عصر
آره این که واضحه ! آهان اون بالا من گفتم آدرسو ذخیره میکنیم شما رو سر در گم کرد من اونجا فک میکردم شما با این روش مشکل داری و کلی گفتم آدرسو نگه میداریم (فک میکردم شما میگی چرا عکسو تو DB ذخیرش نمیکنیم) وگرنه چیزی که ذخیره میشه فقط یه اسمه و بقیش یعنی pic\\ ثابته و نیاز به ذخیرش هر بار نیست.

mashhadpix
دوشنبه 07 مرداد 1392, 07:59 صبح
من یک دیتابیس پایگاه خبری دارم مانند عکس زیر:
108076

می خواهم این دیتابیس را در ویژوال استادیو 2010 یک گرید ویو درست کنم که از دیتابیس بخونه و اطلاعات را درون این گرید ویو وارد کنه و امکان میرایش و حذف را داشته باشه.
تا این مرحله که طریقه bind کردن را انجام دادم و می خواهم کد نویسی کنم که بتونه این گریدویو را از دیتابیس خودش بخونه و اطلاعات وارد کنه
108077
کدهاش به چه صورت می باشد؟

bomb23
دوشنبه 07 مرداد 1392, 13:12 عصر
سلام اگه منظورتون اینه که الان با SQLDataSource کار کردین حالا میخواید کدنویسی کنید ، باید اول دیتا از DB بخونید بعد اونو داخل یه DataTable بذارید بعد اون دیتاتیبل رو به گرید وصل کنید. با Eval اون لیبل ها رو به اون داده هاتون وصل کنید.

mohammad kafiyan
دوشنبه 07 مرداد 1392, 13:40 عصر
هنگامی که هیچ رکوردی در جدول بانک اطلاعاتی شما وجود نداشته باشد GridView نمایش داده نخواهد شد ، میتوانیم متنی جهت اطلاعات کاربر از وجود نداشتن اطلاعات نمایش دهیم ، برای اینکار روی GridView کلیک راست کرده گزینه Edit Template و سپس EmptyData Template را انتخاب کنید

برای من عمل نمی کنه و هیج پیغامی ظاهر نمی شه

mahdioo12194
دوشنبه 07 مرداد 1392, 13:53 عصر
برای من عمل نمی کنه و هیج پیغامی ظاهر نمی شه

در قسمت properties گرید در قسمت empty data text متنتان را وارد کنید

mashhadpix
دوشنبه 07 مرداد 1392, 14:05 عصر
سلام اگه منظورتون اینه که الان با SQLDataSource کار کردین حالا میخواید کدنویسی کنید ، باید اول دیتا از DB بخونید بعد اونو داخل یه DataTable بذارید بعد اون دیتاتیبل رو به گرید وصل کنید. با Eval اون لیبل ها رو به اون داده هاتون وصل کنید.

نمی خواخم به صورت ویزارد کار کنم. کمک

mohammad kafiyan
دوشنبه 07 مرداد 1392, 14:13 عصر
در قسمت properties گرید در قسمت empty data text متنتان را وارد کنید

متن وارد کردم نمی دونم چرا چیزی نمایش نمی دهد


دوست عزیز به صورت ویزاردی که نیست دوستمون گفتند


نمی خواخم به صورت ویزارد کار کنم. کمک

mashhadpix
دوشنبه 07 مرداد 1392, 14:41 عصر
در قسمت properties گرید در قسمت empty data text متنتان را وارد کنید کجا؟

ممنون میشم کجا را منظورتون است؟

mohammad kafiyan
دوشنبه 07 مرداد 1392, 17:26 عصر
کجا؟

ممنون میشم کجا را منظورتون است؟

برای اینکار روی GridView کلیک راست کرده گزینه Edit Template و سپس EmptyData Template را انتخاب کنید

mahdioo12194
دوشنبه 07 مرداد 1392, 17:57 عصر
برای اینکار روی GridView کلیک راست کرده گزینه Edit Template و سپس EmptyData Template را انتخاب کنید

نه منظورم اون نیست اون واسه template است شاید ما از template استفاده نکرده باشیم !

108113

bomb23
دوشنبه 07 مرداد 1392, 19:00 عصر
نمی خواخم به صورت ویزارد کار کنم. کمک

دوست عزیز گفتم که چیکار کنید : باید اول دیتا از DB بخونید بعد اونو تو GridView.DataSource قرار بدید. میتونید اول داده ها رو داخل DataTable بذارید بعد بریزید داخل GridView.DataSource . بعد با متد Eval() داده هایی رو که میخواید رو به لیبل هاتون بایند کنید.

mohammad kafiyan
دوشنبه 07 مرداد 1392, 21:41 عصر
نه منظورم اون نیست اون واسه template است شاید ما از template استفاده نکرده باشیم !

برادر گل من از templatefild استفاده کردم و در ضمن
می خواهم زمانی که رکوردی در gridview وجود نداشت در سرچ
نام ستون های header text گریدویو را نمایش بده و یک سطر خالی هم در گرید ویو و پیغام نمایش خالی بودن را بدهد آیا این امکان پذیر هستش

bomb23
سه شنبه 08 مرداد 1392, 03:04 صبح
برادر گل من از templatefild استفاده کردم و در ضمن
می خواهم زمانی که رکوردی در gridview وجود نداشت در سرچ
نام ستون های header text گریدویو را نمایش بده و یک سطر خالی هم در گرید ویو و پیغام نمایش خالی بودن را بدهد آیا این امکان پذیر هستش

سلام برادر
شما تو قسمت EmptyData سرستون هاتون رو بذارید و زیرش بنویسید نتیجه ای یافت نشد!

mohammad kafiyan
سه شنبه 08 مرداد 1392, 11:02 صبح
شما تو قسمت EmptyData سرستون هاتون رو بذارید و زیرش بنویسید نتیجه ای یافت نشد!

بیشتر توضیح دهید
empty data text یا
empty data template
کدام را می گویید ،برادر گل من از templatefild برای نمایش ستون ها استفاده کردم
چگونه و کجا باید ستونها را تعریف کنم و در سطر بعدی گریدویو پیغام بدهم که رکوردی یافت نشد

bomb23
سه شنبه 08 مرداد 1392, 13:52 عصر
EmptyDataTemplate .
بقیه سوالتون رو متوجه نمیشم خب آموزش بالا گذاشتم توضحاتش فک نمیکنم ناقص باشه!

mohammad kafiyan
سه شنبه 08 مرداد 1392, 15:20 عصر
EmptyDataTemplate .
بقیه سوالتون رو متوجه نمیشم خب آموزش بالا گذاشتم توضحاتش فک نمیکنم ناقص باشه!

برادر گل اگر امکانش هست یک نمونه پروژه کوچک قرار بدهید اینجور به نتیجه نمی رسیم
چگونه و کجا باید ستونها را تعریف کنم و در سطر بعدی گریدویو پیغام بدهم که رکوردی یافت نشد

mashhadpix
چهارشنبه 09 مرداد 1392, 14:35 عصر
یک Table با عرض 100% داخل این فضا ایجاد می کنم با 1 ستون و دو سطر ، سپس در سطر اول یک Label و در سطر دوم هم یک Label دیگر قرار می دهم

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

sirvan-me
چهارشنبه 09 مرداد 1392, 15:48 عصر
چطوری این کارو کنم هر کاری می کنم فقط یک جدول ایجاد میشه با یک سطر و یک ستون.
ممنون میشم راهنمایی کنید؟

تو حالت Design پنجره ی Toolbox رو باز کن. از ابزار های گروه HTML ابزار Table رو به محیط Drag کن. حالا یه جدول پیش فرض داری. می تونی به بخش Source بری و اونجا با تگ های Tr و Td شروع کنی به اضافه کردن سطر و ستون. تو حالت Design هم می تونی تغییرات رو بدی. اما پیشنهاد من بهت بخش کد هستش. می تونی تو تگ Table با استفاده از عبارت زیر پهنای 100 درصد به جدولت بدی.


<table style=' width:100 ; font-size:11px ; color:blue>

bomb23
چهارشنبه 16 مرداد 1392, 00:02 صبح
چطوری این کارو کنم هر کاری می کنم فقط یک جدول ایجاد میشه با یک سطر و یک ستون.
ممنون میشم راهنمایی کنید؟

خب برید تو کد دستی یه table بسازید !!! فک نمیکنم مسئله ای داشته باشه!

Patriotism
شنبه 09 شهریور 1392, 12:08 عصر
سلام
هنگام edit کردن یک رکورد فیلدها خیلی کوچیک نمایش داده میشه و فیلدی که شامل توضیحات زیاده edit کردنش خیلی دشواره!
چطور میشه پس از کلیک بر روی edit فیلد به اندازه نوشته بزرگ باشه؟