更改ButtonField的图像(图像网址),该图像通过onclick事件添加到Gridview中

时间:2012-02-04 12:36:28

标签: asp.net

我在一个Gridview的列中添加一个ButtonField,因此每个记录都有Buttonfield,如下面的代码

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

在此我想通过点击那个按钮字段来改变图像(图像网址)..

我在Gridview中添加了一列STATUS ......

我想改变Buttonfield的图像4次..

表示默认显示“黑色图像”,STATUS为“1” 在第一次单击它会更改为“蓝色图像”并且状态必须更改为“2” 在第二次点击它变为“绿色图像”状态“3”  在第3次点击它变为“红色图像”状态“4”。 然后再次点击它会变为“黑色图像”状态“1”..

它也像第一次点击一样将图像从黑色变为蓝色,STATUS从“1”变为“2” 但是当我再次点击它不起作用..再次改变它。它需要阻止项目运行。并重新运行它。然后它只工作一次然后再次需要停止项目等等... 任何解决方案????

我的代码如下..

protected void GvDetail_RowCommand(object sender,GridViewCommandEventArgs e)     {

if(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();


    }


}

我该怎么做?

提前致谢

2 个答案:

答案 0 :(得分:1)

您需要将处理程序附加到RowCommand事件。在其中,您可以找到从GridViewCommandEventArgs(我认为的CommandSource)中单击的按钮,并将URL更改为图像。

答案 1 :(得分: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

P.S。你可以使用findcontrol

但由于您的gridview不在模板中 -

所以它没有Id

enter image description here