PDA

View Full Version : سوال: سوالاتی در مورد سفارشی کردن gridView



ShahinRad97
پنج شنبه 13 مرداد 1390, 01:35 صبح
مقدمه:
من میخوام یه سایت بنویسم که از hashing برای فیلد پسورد کاربرا استفاده میکند. من میخوام یه گرید ویو داشته باشم که بتونم از طریق اون همه کاری کنم (درج، حذف و ویرایش). اینکه چطور فیلدهای دستورات و دکمه ها رو ایجاد کنم رو با جستجو در همین سایت و msdn متوجه شدم. ولی مشکلاتی هست که برای حل اونا به کمک شما تاپیک زدم.
سوالات:
1- اگه من بخوام با کلیک بر روی یک دکمه در گرید ویو یه تابعی در code behind اتفاق بیوفته باید اینو چجور پیاده کنم؟
2- اگه من بخوام به اون تابع پارامتر ارسال کنم باید چجوری عمل کنم؟ (مثلا فیلد username از سطری که دکمه کلیک شده در آن قرار دارد.)
3- اگه بخوام با دکمه حذف اول سوال پرسیده بشه باید چیکار کنم؟
4- میتونم فقط ستون های دستورات (دکمه ها) رو با کد پیاده کنم و بقیه ستون ها بسته به datasource اتومات تعریف بشن؟
5- مقاله، کتاب قابل الکترونیک و ... فارسی یا انگلیسی سراغ دارید که این مطالب رو آموزش داده باشه (کامل)؟
جواب سوال 3 رو میدونم ولی با توجه شروط ذکر شده در مقدممه و سوالات ممکنه تغییر کنه. اینو چجوری پیاده کنم.

دوستان پیشاپیش ممنون از کمکتون و شرمنده از مزاحمت.

hjran abdpor
پنج شنبه 13 مرداد 1390, 02:20 صبح
سلام.
توی لینک اول به قسمت کار با دادها در گریدویو مراجعه کن و تو فروم برنامه نویس تالار asp.net .
http://delshad.ir/archive.aspx
فهرست مقالات، پروژه ها و تاپیک های مفید تالار ASP.NET

ShahinRad97
پنج شنبه 13 مرداد 1390, 17:01 عصر
ممنون.
قبلا این سایتو تقریبا کامل خوندم.

ولی جواب سوالات من اینجا نبود

hjran abdpor
پنج شنبه 13 مرداد 1390, 17:10 عصر
خوب به قسمت فهرست مقالات، پروژه ها و تاپیک های مفید تالار ASP.NET حتما سر بزنید چون خودم جواب اکثر سوالاتتون را اونجا مشاهد کردم.

ho0rezam
پنج شنبه 13 مرداد 1390, 18:16 عصر
همون طور که جناب Hjan گفتن توی مقالات آقای دلشاد بیشتر جواب های شما هست.

اما فعلا تا جایی که بدونم همینجا بهتون توضیح میدم
1. برای اینکار باید از LinkButton ها استفاده کنید ، خاصیت CommandName و CommandArgument واسش تعیین کنید. و در rowCommand گرید ویو یک شرط قرار بدید که اگر commandName با commandName دکمه کلیک شده برابر بود تابع اجرا بشه
2 و 4 رو متوجه نشدم
اما 3.میتونید در همون Linkbutton از رویداد onclick استفاده کنید مثل:

OnClientClick="return confirm ('سوال مورد نظر');"

ShahinRad97
پنج شنبه 13 مرداد 1390, 18:32 عصر
ممنون از جوابتان

منظورم از سوال 2 و کلا کل این سوالات اینه که :
مثلا کاربر دکمه حذف رو از یه سطری کلیک میکنه. حالا میخوام از کاربر سوال بشه و در صورت مثبت بودن جواب، مقدار username همون سطر رو به عنوان یه آرگومان به تابعی در codebehind ارسال کنه. (تابع هم اونو از دیتا بیس حذف میکنه و گرید ویو را با مقادیر جدید به روز میکنه)

ho0rezam
پنج شنبه 13 مرداد 1390, 19:00 عصر
خب توضیحی هم که دادم دقیقا همین کار رو انجام میده دوست عزیز...مثلا فرض کنید برای linkbutton در صفحه اینگونه عمل کردید:



<asp:LinkButton ID="LinkButton11" runat="server" CssClass="Defaultbtn" CommandName="delete" CommandArgument='<%#Eval("ID") %>'></asp:LinkButton>که در صورت نیاز میتونید برای اینکه قبل حذف از کاربر سوال کنه ، اون OnClientClick رو هم به LinkButton اضافه کنید
حالا باید در code behind اینطور عمل کنید:

if (e.CommandName == "delete")
{
int ID = Convert.ToInt32(e.CommandArgument);

// اتصال به دیتابیس
// قرار دادن آرگومان گرفته شده از دکمه به رشته اتصال
//حذف
//بستن کانکشن

ShahinRad97
جمعه 14 مرداد 1390, 15:56 عصر
ممنون.
حالا چطور میشه چند تا آرگومان رو به تابع بفرستیم؟ مثلا برای update

ShahinRad97
یک شنبه 16 مرداد 1390, 00:35 صبح
دوستان این نمونه در پست دوم رو ببینید:

http://forums.asp.net/t/1368247.aspx/1?GridView+custom+Edit+button

(یه علامت + به آخر لینک اضافه کنید)

من یه همچین چیزی میخوام ولی خیلی برام سنگینه. اگه میشه لطف کنید یه همچین چیزی ولی سبکتر بهم معرفی کنید.

میتونم به همون صورت اتوماتیک ایجادش کنم. ولی مشکلی که دارم اینه که یه فیلد رو به صورت کد شده در دیتابیس قرار میدم و وقتی هم میخوام بخونمش اونو دیکد می کنم.
کار کد و دکد با ارسال رشته به یک کلاس انجام میشه.

اگه اتوماتیک این کارا انجام بشه دیگه نمیتونم اونو کد و دیکد کنم. لطفا کمکم کنید.

dontspeak
یک شنبه 16 مرداد 1390, 03:09 صبح
توی این لینک آموزش sqldatasource رو قرار دادم. و یه سری کارها که به گرید مربوط میشه رو داخلش توضیح دادم. فکر کنم کلا بدردت بخوره. اما جواب این سوالات
اینجور که من فهمیدم بیشتر مشکلت سر انتخاب یک سطر از گزید ویو و اعمال یک سری دستورات روی اون سطر هست. برای دستیابی به یک سطر خاص می تونی طبق همون فیلم آموزشی یک دکمه select توی گرید قرار بدی و بعد با استفاده از این دستور به اون سطر دسترسی داشته باشی.
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
MehranFilmImageDataContext Message = new MehranFilmImageDataContext();
var Query = (from P in Message.t_MehranFilmImages
where P.ImageId.ToString() == GridView1.SelectedRow.Cells[1].Text.ToString()
select P).Single();
Query.ImageDelete = false;
Message.SubmitChanges();
GridView1.DataBind();
}
catch
{
lblMessage.Text = "خطایی رخ داده است";
}
}
که توی اینجا من اومدم یک رکورد رو با استفاده از linq و دکمه

ShahinRad97
یک شنبه 16 مرداد 1390, 08:26 صبح
توی این لینک آموزش sqldatasource رو قرار دادم. و یه سری کارها که به گرید مربوط میشه رو داخلش توضیح دادم. فکر کنم کلا بدردت بخوره. اما جواب این سوالات
اینجور که من فهمیدم بیشتر مشکلت سر انتخاب یک سطر از گزید ویو و اعمال یک سری دستورات روی اون سطر هست. برای دستیابی به یک سطر خاص می تونی طبق همون فیلم آموزشی یک دکمه select توی گرید قرار بدی و بعد با استفاده از این دستور به اون سطر دسترسی داشته باشی.
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
MehranFilmImageDataContext Message = new MehranFilmImageDataContext();
var Query = (from P in Message.t_MehranFilmImages
where P.ImageId.ToString() == GridView1.SelectedRow.Cells[1].Text.ToString()
select P).Single();
Query.ImageDelete = false;
Message.SubmitChanges();
GridView1.DataBind();
}
catch
{
lblMessage.Text = "خطایی رخ داده است";
}
}
که توی اینجا من اومدم یک رکورد رو با استفاده از linq و دکمه


ممنون. لینک رو یادتون رفت.

dontspeak
یک شنبه 16 مرداد 1390, 10:40 صبح
شرمنده :لبخند:
http://www.learningweb.ir/showthread.php?16-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1%DB%8C-sqlDataSource