我在一个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();
}
}
我该怎么做?
提前致谢
答案 0 :(得分:1)
您需要将处理程序附加到RowCommand
事件。在其中,您可以找到从GridViewCommandEventArgs
(我认为的CommandSource)中单击的按钮,并将URL更改为图像。
答案 1 :(得分:1)
你应该添加命令:
绑定数据
编写命令
的代码http://i.stack.imgur.com/c1j0Q.png
按
P.S。你可以使用findcontrol
但由于您的gridview不在模板中 -
所以它没有Id