2012-02-04 193 views
1

加入ButtonField字段的我添加ButtonField字段在一個GridView的列,以便有ButtonField字段對於每個記錄,如下代碼更改圖像(圖像URL),其在的GridView通過onclick事件

<asp:GridView ID="GvDetail" runat="server"> 
    <Columns> 
     <asp:ButtonField ButtonType="Image" ImageUrl="~/Img/Black.png" CommandName="ggg" /> 
    </Columns> 
</asp:GridView> 

在這方面,我想通過點擊該按鈕場改變圖像(圖像URL)..

我添加一列STATUS在GridView ...

我想改變的ButtonField字段4倍的圖像..

它意味着默認顯示「黑色圖像」,狀態爲「1」 第一次點擊它變成「藍色圖像」,狀態必須更改爲「2」 第二次點擊它變成「綠色圖像」狀態「3」 第三次點擊它變成「紅色圖像」狀態「4」。 和4日再次單擊它更改爲「黑圖像」狀態「1」 ..

它也像工作在1日點擊它從黑色圖像變爲藍色和狀態從「1」到「2」 但當我再次點擊它不工作..再次改變它。它需要停止運行項目。並重新運行它。那麼它只適用於一次點擊,然後再次需要停止項目等...... 任何解決方案?

我的代碼是如下..

保護無效GvDetail_RowCommand(對象發件人,GridViewCommandEventArgs E) {

如果(e.CommandName == 「GGG」) {

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

     int temp; 
     temp = Convert.ToInt32(GvDetail.Rows[index].Cells[1].Text); 
     // gets the ID of clicked row from First Column(Name="Id") 

     com = new SqlCommand(); 
     var _with1 = com; 
     _with1.Connection = con; 


     if (GvDetail.Rows[index].Cells[3].Text == "1") 
     { 
      string str1; 
      str1 = "update SubTask set Status='2' where ID= '" + temp + "'"; 
      _with1.CommandText = str1; 
      Label4.Text = "Start"; 
      Label4.Text = str1; 

      GridViewRow gvRow = GvDetail.Rows[index]; 
      ((ImageButton)gvRow.Controls[0].Controls[0]).ImageUrl = "~/Image/Green.png"; 
     } 

     else if (GvDetail.Rows[index].Cells[3].Text == "2") 
     { 
      string str1; 
      str1 = "update SubTask set Status='3' where ID= '" + temp + "'"; 
      _with1.CommandText = str1; 
      Label4.Text = "Start"; 
      Label4.Text = str1; 
      GridViewRow gvRow = GvDetail.Rows[index]; 
      ((ImageButton)gvRow.Controls[0].Controls[0]).ImageUrl = "~/Image/Blue.png"; 
     } 

     else if (GvDetail.Rows[index].Cells[3].Text == "3") 
     { 
      string str1; 
      str1 = "update SubTask set Status='4' where ID= '" + temp + "'"; 
      _with1.CommandText = str1; 
      Label4.Text = "Start"; 
      Label4.Text = str1; 
      GridViewRow gvRow = GvDetail.Rows[index]; 
      ((ImageButton)gvRow.Controls[0].Controls[0]).ImageUrl = "~/Image/Red.png"; 
     } 

     else if (GvDetail.Rows[index].Cells[3].Text == "4") 
     { 
      string str1; 
      str1 = "update SubTask set Status='1' where ID= '" + temp + "'"; 
      _with1.CommandText = str1; 
      Label4.Text = "Start"; 
      Label4.Text = str1; 
      GridViewRow gvRow = GvDetail.Rows[index]; 
      ((ImageButton)gvRow.Controls[0].Controls[0]).ImageUrl = "~/Image/Black.png"; 
     } 

     _with1.ExecuteNonQuery(); 


    } 


} 

我該怎麼辦?

在此先感謝

+0

看到我的檢查答案 – 2012-02-04 13:06:32

回答

1

你應該添加命令:

enter image description here

綁定數據

enter image description here

寫代碼指令

http://i.stack.imgur.com/c1j0Q.png enter image description here

enter image description here

enter image description here

附:你也可以使用的FindControl

但因爲你的GridView是不是一個模板內 -

所以它不會有一個ID

enter image description here

+0

嘿謝謝.. 你代碼工作.. 但我有一個問題再次閱讀我的問題因爲我編輯.. – Dip 2012-02-06 05:39:02

+1

@stranger - 如果羅伊已經幫助 - 然後我會標記爲答案,並提出一個單獨的問題。 Royi很明顯地把工作放在這裏,我認爲值得 - 這個新問題也會得到更多的興趣和貢獻者。當然只是MHO – 2012-02-06 10:29:11

1

你需要一個處理程序連接到RowCommand事件。在這裏你可以找到從GridViewCommandEventArgs(我認爲是CommandSource)點擊了哪個按鈕,並將url更改爲圖像。