ASP.NET使用GridView控件、DetailsView控件

ASP.NET使用GridView控件绑定列表信息、DetailsView控件绑定详细信息。

1、 使用GridView完成用户列表的显示

使用GridView完成用户列表的绑定、分页、数据修改、数据删除、光棒效果。

1.1 创建UserList.aspx文件

<asp:GridView ID="gvUser" runat="server" AutoGenerateColumns="False" DataKeyNames="UserId" AllowPaging="True" PageSize="10" 
    OnRowDataBound="gvUser_RowDataBound" 
    OnPageIndexChanging="gvUser_PageIndexChanging" 
    onrowcancelingedit="gvUser_RowCancelingEdit" 
    onrowediting="gvUser_RowEditing" onrowupdating="gvUser_RowUpdating" 
    onrowdeleting="gvUser_RowDeleting">
    <PagerSettings FirstPageText="首页" LastPageText="尾页" NextPageText="下一页" 
        PreviousPageText="上一页" />
    <Columns>
        <asp:BoundField HeaderText="编号" DataField="UserId" ReadOnly="true"/>
        <asp:TemplateField HeaderText="用户名">
            <ItemTemplate>
                <asp:Label ID="Label2" runat="server" Text='<%# Bind("UserName") %>' ></asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("UserName") %>'></asp:TextBox>
            </EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="创建时间">
            <ItemTemplate>
                <asp:Label ID="Label3" runat="server" Text='<%# Bind("CreateTime","{0:yyyy-MM-dd}") %>' ></asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("CreateTime","{0:yyyy-MM-dd}") %>' ></asp:TextBox>
            </EditItemTemplate>
        </asp:TemplateField>
        <asp:CommandField HeaderText="修改"  ShowEditButton="True" />
        <asp:CommandField HeaderText="删除"  ShowDeleteButton="True" />
        <asp:HyperLinkField HeaderText="详细" Text="查看" DataNavigateUrlFields="UserId" DataNavigateUrlFormatString="/Manager/UserDetail.aspx?UserId={0}" />
    </Columns>
</asp:GridView>

1.2 编写后台代码(UserList.aspx.cs)

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        FillData();
    }
}

/// <summary>
/// 绑定数据
/// </summary>
protected void FillData()
{
    gvUser.DataSource = userInfoDAL.GetUserList();
    gvUser.DataBind();
}

/// <summary>
/// 翻页事件
/// </summary>
protected void gvUser_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    gvUser.PageIndex = e.NewPageIndex;
    FillData();
}

/// <summary>
/// 光棒效果
/// </summary>
protected void gvUser_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        e.Row.Attributes.Add("onmouseover", "currentColor=this.style.backgroundColor;this.style.backgroundColor='#6699ff';");
        e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentColor;");
    }
}

/// <summary>
/// 切换到行修改
/// </summary>
protected void gvUser_RowEditing(object sender, GridViewEditEventArgs e)
{
    gvUser.EditIndex = e.NewEditIndex;
    FillData();
}

/// <summary>
/// 取消行修改
/// </summary>
protected void gvUser_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
    gvUser.EditIndex = -1;
    FillData();
}

/// <summary>
/// 提交修改
/// </summary>
protected void gvUser_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    UserInfo user = new UserInfo();
    user.UserId = (int)gvUser.DataKeys[e.RowIndex].Value;    //用户编号作为主索引,是在GridView的DataKeyNames="UserId"设置的
    user.UserName = ((TextBox)gvUser.Rows[e.RowIndex].Cells[1].FindControl("TextBox2")).Text;
    userInfoDAL.UpdateUserInfo(user);
    gvUser.EditIndex = -1;
    FillData();
}

/// <summary>
/// 执行删除
/// </summary>
protected void gvUser_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    int userId = (int)gvUser.DataKeys[e.RowIndex].Value;    //员工编号作为主索引,是在GridView的DataKeyNames="UserId"设置的
    Response.Write("执行删除编号:" + userId + "的用户");
}

2、使用DetailsView用户信息详细

 

使用DetailsView用户信息详细、修改、新增。

2.1 创建UserDetail.aspx文件

<asp:DetailsView ID="dvUser" runat="server" Height="50px" Width="125px" 
    AutoGenerateRows="False" DataKeyNames="UserId" 
    OnItemCommand="dvUser_ItemCommand" OnModeChanging="dvUser_ModeChanging" 
    OnItemUpdating="dvUser_ItemUpdating" oniteminserting="dvUser_ItemInserting" >
    <Fields>
        <asp:BoundField DataField="UserId" HeaderText="用户编号" ReadOnly="True" InsertVisible="false" />
        <asp:TemplateField HeaderText="用户名">
            <ItemTemplate>
                <asp:Label ID="lblLoginId" runat="server" Text='<%# Bind("UserName") %>'></asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("UserName") %>'></asp:TextBox>   
            </EditItemTemplate>
        </asp:TemplateField>
        <asp:CommandField ShowEditButton="True" />
        <asp:CommandField ShowInsertButton="True" />
        <asp:ButtonField CommandName="out" DataTextFormatString="UserList.aspx" Text="返回" />
    </Fields>
</asp:DetailsView>

2.2 编写后台代码(UserDetail.aspx.cs)

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        FillData();
    }
}

//绑定数据
private void FillData()
{
    int userId = Convert.ToInt32(Request.QueryString["UserId"]);
    dvUser.DataSource = userInfoDAL.GetUserById(userId);
    dvUser.DataBind();
}

//这是使用ButtonFile按键,所以要通过e.CommandName判断一下按下了那个按钮
protected void dvUser_ItemCommand(object sender, DetailsViewCommandEventArgs e)
{
    if (e.CommandName == "out")
    {
        Response.Redirect("UserList.aspx");
    }
}

//点击“CommandFild”相关按钮时,改变dvUser的模式
protected void dvUser_ModeChanging(object sender, DetailsViewModeEventArgs e)
{
    //当我们点击“编辑”时,e.NewMode就会返回Edit给ChangeMode()方法,这时dvUser就会切换到编辑界面
    dvUser.ChangeMode(e.NewMode);
    FillData();
}

//在编辑界面时,点击“更新”就会执行以下代码
protected void dvUser_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
{
    UserInfo user = new UserInfo();
    user.UserId = (int)dvUser.DataKey.Value;    //用户编号作为主索引,是在DetailsView的DataKeyNames="UserId"设置的
    user.UserName = ((TextBox)dvUser.FindControl("TextBox2")).Text;
    int result = userInfoDAL.UpdateUserInfo(user);
    if (result != 0)
    {
        Response.Write("<script>alert('更新成功')</script>");
    }
    else
    {
        Response.Write("<script>alert('更新失败')</script>");
    }
    dvUser.ChangeMode(DetailsViewMode.ReadOnly);
    FillData();
}

//执行新增
protected void dvUser_ItemInserting(object sender, DetailsViewInsertEventArgs e)
{
    string name = ((TextBox)dvUser.FindControl("TextBox2")).Text;
    Response.Write("执行新增用户名:" + name);
    dvUser.ChangeMode(DetailsViewMode.ReadOnly);
    FillData();
}

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pan_junbiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值