GridView1.Cells[5]中 使用 CommandField 的编辑和删除命令,
问题1:大多情况下,GridView1.Cells[5].Controls[0]是编辑 AND GridView1.Cells[5].Controls[2]是删除;而有时,
GridView1.Cells[5].Controls[0]是LiteralControl,内容是"\r\n";GridView1.Cells[5].Controls[1]是编辑 AND GridView1.Cells[5].Controls[3]是删除,不知是怎么回事;问题2:
代码:
if (!IsPostback){
foreach (GridViewRow gr in GridView1.Rows)
{
//权限控制
gr.Cells[5].Controls[0].Visible =true; //编辑可见
gr.Cells[5].Controls[2].Visible = false; //删除不可见
}
}
装载页面时呈现正确;当点击“编辑”后,所有“删除”按钮全部显示了;并且,点击“取消”后,页面呈现中“删除”按钮全部可见了;问题3:对于每行中的编辑和删除的可视该怎么动态控制。
问题1:大多情况下,GridView1.Cells[5].Controls[0]是编辑 AND GridView1.Cells[5].Controls[2]是删除;而有时,
GridView1.Cells[5].Controls[0]是LiteralControl,内容是"\r\n";GridView1.Cells[5].Controls[1]是编辑 AND GridView1.Cells[5].Controls[3]是删除,不知是怎么回事;问题2:
代码:
if (!IsPostback){
foreach (GridViewRow gr in GridView1.Rows)
{
//权限控制
gr.Cells[5].Controls[0].Visible =true; //编辑可见
gr.Cells[5].Controls[2].Visible = false; //删除不可见
}
}
装载页面时呈现正确;当点击“编辑”后,所有“删除”按钮全部显示了;并且,点击“取消”后,页面呈现中“删除”按钮全部可见了;问题3:对于每行中的编辑和删除的可视该怎么动态控制。
==
等楼主学会用TemplateField,上面的问题就都可以解决了,用Cells[index].Controls[0]来定位控件可以说是比较初级的做法比如你的问题3
问题3:对于每行中的编辑和删除的可视该怎么动态控制。
==
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btnDelete" runat="server" Text="删除" Visible='<%# IsAdmin %>' CommandName="Delete" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>在后台代码中给一个 IsAdmin属性来控制即可
这个应该是在客户端显示时控制显示格式用的,控制按钮的显示与否将visialbe绑定到bool字段就行了,如amandag 所说
背景:张三写的代码,加载李四写的权限模块的时候产生的上述问题。作为项目的管理者,解决不了这个问题,可以要求张三将那些命令全部转化为模版列;但我还是想知道,一样的代码(张三说是复制的)]Controls的表现为什么会不同呢。
揭贴。