今天遇到了一个问题,本来想实现的效果是,在gridview中增加一列锁定/解锁的图片,点击图片后,在用户锁定/解锁状态之间互相切换,开始的代码是这样的:
aspx
aspx
<asp:TemplateField HeaderText="启用" HeaderStyle-Width="40px" HeaderStyle-CssClass="usertable_th">
<ItemTemplate>
<asp:ImageButton runat="server" ID="CheckUser" ImageUrl='<%# (Convert.ToInt32(Eval("UserPermited").ToString()))==1?"/images/icon/unlock.gif":"/images/icon/lock.gif"%>'
AlternateText='<%# (Convert.ToInt32(Eval("UserPermited").ToString()))==1?"用户已启用,点击“锁定用户":"用户被锁定,点击解锁" %>'
CommandName="ONOFF" OnClick="CheckUser_Click" />
</ItemTemplate>
<EditItemTemplate>
<asp:CheckBox ID="chkUser" runat="server" Checked='<%# (Convert.ToInt32(Eval("UserPermited").ToString()))==1?true:false %>'
ToolTip='<%# (Convert.ToInt32(Eval("UserPermited").ToString()))==1?"用户已启用,点击锁定用户":"用户被锁定,点击进行解锁" %>' />
</EditItemTemplate>
</asp:TemplateField>
<ItemTemplate>
<asp:ImageButton runat="server" ID="CheckUser" ImageUrl='<%# (Convert.ToInt32(Eval("UserPermited").ToString()))==1?"/images/icon/unlock.gif":"/images/icon/lock.gif"%>'
AlternateText='<%# (Convert.ToInt32(Eval("UserPermited").ToString()))==1?"用户已启用,点击“锁定用户":"用户被锁定,点击解锁" %>'
CommandName="ONOFF" OnClick="CheckUser_Click" />
</ItemTemplate>
<EditItemTemplate>
<asp:CheckBox ID="chkUser" runat="server" Checked='<%# (Convert.ToInt32(Eval("UserPermited").ToString()))==1?true:false %>'
ToolTip='<%# (Convert.ToInt32(Eval("UserPermited").ToString()))==1?"用户已启用,点击锁定用户":"用户被锁定,点击进行解锁" %>' />
</EditItemTemplate>
</asp:TemplateField>
但是不知道为什么gridview始终无法相应row_Command事件,所以也无法进行CommandName=="ONOFF"的判断。
搞了半天,从网上找了资料也没有相关说明,不过找到了一个别人用相同方法却可以使用的例子(查看),郁闷啊,对.net感兴趣的网友可以帮我提提我是哪里弄得不对。
我最后的解决方法是:不在imagebutton上相应事件了,增加了一个username列(ButtonField类型),点击ButtonField可以触发row_command事件,最后用的是这个解决方法,不爽。。。