可以控制.对于不可以编辑的行之后在代码里用普通文字替换一下那个链接就可以了.

解决方案 »

  1.   

    在RowDataBound写方法,做判断<asp:GridView ID="gvRole" runat="server" AutoGenerateColumns="False" Width="100%" DataKeyNames="RoleID" OnRowCancelingEdit="gvRole_RowCancelingEdit" OnRowDeleting="gvRole_RowDeleting" OnRowEditing="gvRole_RowEditing" OnRowUpdating="gvRole_RowUpdating" OnRowDataBound="gvRole_RowDataBound">
                                <Columns>
                                    <asp:BoundField DataField="RoleName" HeaderText="角色名称" />
                                    <asp:BoundField DataField="Re" HeaderText="描述" />
                                    <asp:TemplateField ShowHeader="False" HeaderText="编辑">
                                        <EditItemTemplate>
                                            <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True" CommandName="Update"
                                                Text="更新"></asp:LinkButton>
                                            <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Cancel"
                                                Text="取消"></asp:LinkButton>
                                        </EditItemTemplate>
                                        <ItemTemplate>
                                            <asp:LinkButton ID="lbtEdit" runat="server" CausesValidation="False" CommandName="Edit"
                                                Text="编辑"></asp:LinkButton>
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="删除">
                                        <ItemTemplate>
                                            <asp:LinkButton ID="lbtDelete" runat="server" CausesValidation="False" CommandName="Delete" OnClientClick = "return confirm('确定要删除这行数据吗?');"
                                                Text="删除"></asp:LinkButton>
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="权限">
                                        <ItemTemplate>
                                            <asp:HyperLink ID="Right" runat="server" NavigateUrl='<%# Eval("RoleID", "MenuRight.aspx?RoleID={0}") %>' 
                                                Text="权限"></asp:HyperLink>
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                </Columns>
                            </asp:GridView>protected void gvRole_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                try
                {
                    LinkButton button = (LinkButton)e.Row.FindControl("lbtDelete");
                    button.Visible = base.CheckAuth("RoleIndex.aspx", "lbtDelete");//CheckAuth是我写的一个方法 你可以把自己的方法加到这里 会达到你想要的效果
                    HyperLink link = (HyperLink)e.Row.FindControl("Right");
                    link.Visible = base.CheckAuth("RoleIndex.aspx", "Right");
                    button = (LinkButton)e.Row.FindControl("lbtEdit");
                    button.Visible = base.CheckAuth("RoleIndex.aspx", "lbtEdit");
                }
                catch
                {
                }
            }
            else
            {
                DataControlRowType rowType = e.Row.RowType;
            }
        }