PDA

View Full Version : سوال: تغییر پویا تصویر در Template field



aisuda
یک شنبه 18 اسفند 1392, 11:29 صبح
با سلام به همگی دوستان
من یه گرید دارم که شامل چند فیلد میشه، یکی از این فیلدها (که به صورت template field تعریف شده) شامل یک HyperLink است که داخل item template تعریف شده. حالا من می خوام به فراخور تصویر (img scr= "ddddd.png") مربوطه تغییر کند. مثلا اگر این گرید بخواد لیست کاربران رو نشون بده، کاربرانی که آنلاین هستند را در ستون مربوطه یک تصویر مثلا سبزرنگ بذاره و کاربرانی آفلاین هستند رو تصویر مثلا قرمز بذاره. امیدوارم که منظورم رو رسونده باشم. ممنون از همتون

aisuda
دوشنبه 19 اسفند 1392, 11:42 صبح
سلام دوستان، لطفا یکی جواب بده:
من در رویداد GridView1_RowDataBound این کارا رو کردم:
Int16 i=0; if (e.Row.RowType == DataControlRowType.DataRow)
{

HyperLink HL = (HyperLink)e.Row.FindControl("HyperLinkStatus");
//if (e.Row.RowIndex > 0)
//{
i=0;
foreach (DataControlFieldCell Cell in e.Row.Cells)
{
if (i==2)
break;
i+=1;
}


//if (e.Row.Cells. == 2)
// if (Cell.ContainingField.ToString() ==
// {
if (Membership.GetUser(GridView1.Rows[e.Row.RowIndex].Cells[2].Text).IsOnline)
//DataKeys[e.Row.RowIndex + 1].Values[0]).IsOnline)
{
HL.ImageUrl = "../Icons/Online-iconK.png";
}
else
{
HL.ImageUrl = "../Icons/Offline-iconK.png";


}

//}

// }


}
}
مشکلم اینجاست که می خوام فقط ستون با شماره 2 را چک کنه، و در حالت عادی خطا می ده به خاطر همین ستون ها رو شمردم که به دو برسه ولی بازم هم خطا می ده. خواهشن یه راهکاری بدین

aisuda
دوشنبه 19 اسفند 1392, 13:33 عصر
چرا کسی جواب نمی ده:افسرده:

aminireza65
دوشنبه 19 اسفند 1392, 17:06 عصر
این روشی رو که من توضیح دادم به جای رویداد rowdatabound تو رویداد databound بنویس.
شما برای اینکه بخوای ببینی چه کاربری آنلاینه و چه کاربری آفلاین باید تمام سطرهای گرید رو از بالا به پایین چک کنید.
پس یک حلقه بذار که از صفر تا کوچکتر مساوی gridview1.rows.count-1 بشماره.
اما برای اینکه میخوای ستون دوم رو چک کنی میگی gridview1.rows[i].cell[2].text
در ضمن حتما مطمئن شو که ستونی که میخوای چک بشه اندسش 2 باشه.

aisuda
چهارشنبه 21 اسفند 1392, 10:31 صبح
ممنون از شما بابت نظر، ولی راهکارش تنها تغییر یک خط در کد بالا بود که پیداش کردم. به جای خط
if (Membership.GetUser(GridView1.Rows[e.Row.RowIndex].Cells[2].Text).IsOnline)
فقط کافیه
if (Membership.GetUser(e.Row.Cells[2].Text).IsOnline)
بنویسیم