PDA

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



mRizvandi
جمعه 22 فروردین 1393, 00:30 صبح
سلام به همه دوستان

توی یکی از تاپیکها یکی از دوستان در خصوص انتخاب سطری در گریدویو سوال پرسیده بودن، احساس کردم این کد رو خیلی از دوستان ممکنه نیاز داشته باشند، برای همین یک تاپیک آموزشی ساختم. امیدوارم مورد استفاده قرار بگیره.

برای این کار باید از جاوااسکریپت کمک بگیریم. یکی برای زمانی که موس روی سطر میره و تغییر رنگ سطر رو انجام بدیم. و دومی برای زمانی که کاربر روی یک سطر کلیک می کنه که باید doPostBack مربوط به GridViewRow رو صدا بزنیم. کار ساده ای است به کدهای زیر دقت کنید:
ابتدا کد جاوا اسکریپت برای تغییر رنگ سطر زمانی که موس روی سطر قرار می گیره



<script lang="javascript" type="text/javascript">
var oldgridSelectedColor;
var oldgridTextColor;
function setMouseOverColor(element) {
oldgridSelectedColor = element.style.backgroundColor;
oldgridTextColor = element.style.color;
element.style.backgroundColor = '#00BB99';
element.style.cursor = 'pointer';
element.style.color = "#ffffff";
}
function setMouseOutColor(element) {
element.style.backgroundColor = oldgridSelectedColor;
element.style.color = oldgridTextColor;
element.style.textDecoration = 'none';
}
</script>

خب حالا نوبت رویداد کلیک روی سطر هست، برای این منظور، در رویداد RowDataBound مربوط به گریدویو کدهای زیر رو قرار بدید:



protected void gvItems_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes["onmouseover"] = "javascript:setMouseOverColor(this);";
e.Row.Attributes["onmouseout"] = "javascript:setMouseOutColor(this);";
e.Row.Attributes.Add("onclick", this.ClientScript.GetPostBackEventReference(gvItem s, "Select$" + e.Row.RowIndex.ToString()));
}
}


فکر می کنم کدها اینقدر واضح هستند که نیاز به پرحرفی من نباشه، اگر سوالی بود همینجا مطرح بفرمایید.
یک سورس نمونه هم به پیوست گذاشتم که دوستان بتونن اجرای برنامه رو هم ببینن.
موفق و پیروز باشید.

gorhmar
چهارشنبه 15 مهر 1394, 06:22 صبح
در این صورت آیا میتونه
ID اون سطر رو هم برگردونه و مثلا تاریخ رویت در جدول رو Update کنه؟