PDA

View Full Version : سوال: تغییر تصویر imagebutton در gridview



morika
سه شنبه 08 اسفند 1391, 17:46 عصر
سلام
من تو GridView یه ButtonField داشتم که می خواستم وقتی کاربر روش کلیک کرد تصویرش عوش شه. بعداز کلی جستجو تو سایتها نوشته بودن که بهتره از ImageButton برای اینکار استفاده کنیم. حالا من بجای ButtonField ها از ImageButton استفاده کردم به شکل زیر:
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="imbUpdate" ImageUrl="~/images/panel/up-uupdate.png" CommandName="Update"
CommandArgument="<%# Container.DataItemIndex %>" runat="server" />
</ItemTemplate>
</asp:TemplateField>
با این کدهم سعی می کن که تصویرش رو عوض کنم ولی نمیشه:
ImageButton imbUpdate = (ImageButton)GridView1.Rows[index].FindControl("imbUpdate");
imbUpdate.ImageUrl = Server.MapPath("~/images/panel/up-uupdate-shod.png");
کد تغییر تصویر رو هم تو RowCommand نوشتم
کسی می دونه چجوری میشه اینکارو کرد؟
ممنون

mRizvandi
سه شنبه 08 اسفند 1391, 18:36 عصر
شما نمی تونی در RowCommand تصویر رو عوض کنی، چون در رویداد لود دوباره رسم میشه
برای تغییرش باید از رویداد RowDataBound استفاده کنی.
حالا باید وقتی کاربر کلیک کرد، ایندکس ردیفی که کلیک کرده رو نگه داری و در زمان RowDataBound اون ایندکس رو با همون کدی که نوشتی، تغییر بدی.

morika
سه شنبه 08 اسفند 1391, 22:09 عصر
خیلی ممنون این مشکل من حل شد. فقط الان به یه مشکل دیگه برخوردم که اصلا به نظر منطقی نمیاد. تمام کدهای من فقط واسه صفحه اول gridview کار می کنه. یعنی وقتی میریم به صفحه دوم دیگه هیچ کدوم از Button ها کار نمی کنن. این مشکل واسه چیه؟

mRizvandi
چهارشنبه 09 اسفند 1391, 17:51 عصر
احتمالا باید مربوط به ایندکس ردیف ها باشه، اگر ممکنه کد رو بذار که بشه پیداش کرد

morika
پنج شنبه 10 اسفند 1391, 15:38 عصر
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
MCalendar mc = new MCalendar();
DateTime dt = new DateTime();

int index = Convert.ToInt32(e.CommandArgument);
Label lblId = (Label)GridView1.Rows[index].FindControl("lbl_id");
Label lblSold = (Label)GridView1.Rows[index].FindControl("lblSold");
dt = DateTime.Now;

string itemName = string.Format("{0}{1:HHmmss}", mc.PersianDate.GetDate().ToString(), dt);

if (e.CommandName == "Update")
{
SqlDataSource1.UpdateCommand = "UPDATE [file] SET [up_date] = '" +
itemName + "' WHERE [id] = '" + lblId.Text + "'";
SqlDataSource1.Update();
}
else if (e.CommandName == "Sale")
{
if (lblSold.Text == "0")
{
SqlDataSource1.UpdateCommand = "UPDATE [file] SET [sold] = 1 WHERE [id] = '" + lblId.Text + "'";
}
else
{
SqlDataSource1.UpdateCommand = "UPDATE [file] SET [sold] = 0 WHERE [id] = '" + lblId.Text + "'";
}

SqlDataSource1.Update();
}
}

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
MCalendar mc = new MCalendar();
string date = mc.PersianDate.GetDate().ToString();
string up = date.Substring(0, 8);
if (e.Row.RowType == DataControlRowType.DataRow)
{
Label lblUpdate = (Label)e.Row.FindControl("lblUpdate");
if (date == lblUpdate.Text.Substring(0,8))
{
ImageButton imbUpdate = (ImageButton)e.Row.FindControl("imbUpdate");
imbUpdate.ImageUrl = "~/images/panel/up-uupdate-shod.png";
imbUpdate.Enabled = false;
}

Label lblSold = (Label)e.Row.FindControl("lblSold");
if (lblSold.Text == "1")
{
ImageButton imbSold = (ImageButton)e.Row.FindControl("imbSale");
imbSold.ImageUrl = "~/images/panel/up-uactiveb.png";
}
}
}

اینم از تمام کد

morika
شنبه 12 اسفند 1391, 21:37 عصر
دوستان کسی راچع به مشکل دوم نظری نداره