以下是aspx文件内容<%@ Page Language="C#" AutoEventWireup="true" CodeFile="roles_gl.aspx.cs" Inherits="roles_gl" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>角色管理</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h1>角色管理</h1>
        <asp:Label ID="Label1" runat="server" Text="新角色名称:"></asp:Label>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="添加角色" onclick="Button1_Click" />
        <br />
        <br />
        <asp:GridView runat="server" CellPadding="2" id="RolesGrid" GridLines="None" CellSpacing="0" AutoGenerateColumns="false" AlternatingRowStyle-BackColor="#66CCFF" onrowdeleting="RolesGrid_RowDeleting">
            <HeaderStyle BackColor="navy" ForeColor="white" />
            <Columns>
                <asp:TemplateField HeaderText="角色名称" ItemStyle-HorizontalAlign="Center" ItemStyle-Width="200">
                    <ItemTemplate><%# Container.DataItem.ToString() %></ItemTemplate>
                </asp:TemplateField>
                <asp:CommandField ShowDeleteButton="true"  HeaderText="删除角色" ItemStyle-HorizontalAlign="Center" ItemStyle-Width="200" />
            </Columns>
        </asp:GridView>
        <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
    </div>
    </form>
</body>
</html>
以下是aspx.cs的内容using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;public partial class roles_gl : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            GridViewDataBind();
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Roles.CreateRole(TextBox1.Text.ToString());
        GridViewDataBind();
    }
    //将角色数据集绑定到GridView的函数
    protected void GridViewDataBind()
    {
        RolesGrid.DataSource = Roles.GetAllRoles();
        RolesGrid.DataBind();
    }
    protected void RolesGrid_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        Roles.DeleteRole(RolesGrid.Rows[e.RowIndex].Cells[0].Text);
    }
}
单击删除按钮时系统为什么提示rolename不能为空?

解决方案 »

  1.   

    你Response.Write(RolesGrid.Rows[e.RowIndex].Cells[0].Text)看是什么啊。是不是空一看不就明白了?
      

  2.   

    一般情况下,使用GridView的内置功能需要加上
    <%@ Page Language="C#" EnableViewstate="true"
      

  3.   

    你加的是TextBox1.Text.ToString()
    而你取的是 RolesGrid.Rows[e.RowIndex].Cells[0].Text
    你要清楚Cells[0]是什么
      

  4.   


    我已经把roles绑定到gridview了呀, RolesGrid.DataSource = Roles.GetAllRoles();
      

  5.   

    cell[0]应该是我要删除的角色名称,但用RolesGrid.Rows[e.RowIndex].Cells[0].Text
    取不出来,结果显示是空角色名。
      

  6.   

    用RolesGrid.Rows[e.RowIndex].Cells[0].Value.ToString()试试
      

  7.   

    不是根据文本框,文本框是用来添加角色的,添加后在gridview中列表和显示,然后用gridview的删除按钮删除添加的角色。
      

  8.   

    那你就使用
    <ItemTemplate><asp:Label id=x runat=server Text='<%# Container.DataItem.ToString() %>'/></ItemTemplate>后台使用FindControl("x")去找