有关gridview添加CommandField的问题,类型由link改为image就出问题,晕了

极客行天下 2008-09-19 02:56:31
如题,GridView中添加了CommandField列,“删除”及“选择”,以前用默认的link类型,没什么问题,今天,为了美,就把ButtonType换成了Image,谁知问题就出来了,执行时总是出问题,要么不能触发相应的事件,要么重复执行(触发两次),反正乱了。折腾一上午越弄越晕,只要来这里请教了。谢谢!
...全文
332 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
极客行天下 2008-09-19
  • 打赏
  • 举报
回复
谢谢大家,我改用模板列算了。
amandag 2008-09-19
  • 打赏
  • 举报
回复
个人一直使用模版列
lovehongyun 2008-09-19
  • 打赏
  • 举报
回复
重复两次?

你的项目是从03升级过来的吧?

以前的事件注册没有去?
行者无疆-Kevin 2008-09-19
  • 打赏
  • 举报
回复
建议用模板去做.
这样比较好控制,皮肤也好控制.
JeffChung 2008-09-19
  • 打赏
  • 举报
回复
用模板列自己控制
xssongp 2008-09-19
  • 打赏
  • 举报
回复
设置模板列了
用IMAGEBUTTON 呀 属性值 CommandName CommandArgument
<asp:TemplateField HeaderText="描述">
<ItemTemplate>
<asp:Label ID="lblDecription" runat="server" Text='<%# GetCut(Eval("Description").ToString(),100) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="imagebuttonEdit" CommandName="Ed" CommandArgument='<%# Eval("RoomID") %>' runat="server" ImageUrl="~/image/edit.gif" />
</ItemTemplate>
<HeaderStyle Width="25px" />
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="imagebuttonDelete" CommandName="De" CommandArgument='<%# Eval("RoomID") %>' runat="server" ImageUrl="~/image/delete.gif" />
</ItemTemplate>
<HeaderStyle Width="25px" />
</asp:TemplateField>

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
ImageButton imgbtn = (ImageButton)e.Row.FindControl("imagebuttonDelete");
imgbtn.Attributes.Add("onclick","return confirm('您确定要删除吗?');");
}
}

//实现GridView上的事件
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
string cmd = e.CommandName;
int roomid = Convert.ToInt32(e.CommandArgument);
if (cmd == "De")
{
RoomManager.DeleteRoomByRoomID(roomid);
}
else if (cmd == "Ed")
{
Page.Server.Transfer("EditRoom.aspx?RoomID="+roomid.ToString());
}
BindRoom();
}

public void BindRoom()
{
GridView1.DataBind();
}
紫气东来_999 2008-09-19
  • 打赏
  • 举报
回复
灵异事件?
hy_lihuan 2008-09-19
  • 打赏
  • 举报
回复
如果方便换成模板列,那就改一下吧,如果页面很多,那工作量可能会很大的。
你看看你改动以后生成的html和原来的html的区别在哪里,如果只是把link内的文字变成一个img标签,应该是不会有问题的。具体的个人没有做过也懒得去做小试验了
me_loong 2008-09-19
  • 打赏
  • 举报
回复
建议:
aspx写法:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowCommand="GridView1_RowCommand">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton CommandArgument="<%# Eval(ID) %>" CommandName="Deleted" OnClientClick="return confirm('确定要删除该记录吗!')" ID="ImageButton1" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton CommandArgument="<%# Eval(ID) %>" CommandName="Updata" ID="ImageButton1" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
cs写法:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if(e.CommandName == "Deleted")
//删除操作
else if(e.CommandName == "Update")
//修改操作
}
刀枪blue 2008-09-19
  • 打赏
  • 举报
回复
一直用模板列的飘过
takako_mu 2008-09-19
  • 打赏
  • 举报
回复
建議做法(剛試驗過,有效):
1.編輯列
2.把select和delete 轉化成模板列
(將這個欄位轉換為 TemplateField)
3.編輯模板列-->刪除linkbutton,添加進imagebutton,賦imageurl。
4.變成模板列后select和delete仍可以使用原來的餓select和delete事件。
5.在刪除的imagebutton上可以加上onclientclick=return confrim("你確定刪除嗎?")確認提示框。
xiadangongji 2008-09-19
  • 打赏
  • 举报
回复
你用ImageButton试一下
我姓区不姓区 2008-09-19
  • 打赏
  • 举报
回复
用模板列呗
tonyze 2008-09-19
  • 打赏
  • 举报
回复
我觉得不是类型的事,你的事件怎么写的,在哪写的,贴出来

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧