GridView的使用和后台事件

本文详细介绍了ASP.NET中GridView控件的配置方法及事件处理技巧,包括如何设置控件样式、添加编辑和删除功能,并通过具体示例展示了如何在后台代码中实现这些功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

---控件代码 author:heguikun

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="White"
        BorderColor="#336666" BorderStyle="Double" BorderWidth="3px" CellPadding="4"
        DataKeyNames="RoomId" DataSourceID="ObjectDataSource1" GridLines="Horizontal" Width="741px" OnRowCommand="GridView1_RowCommand" OnRowDataBound="GridView1_RowDataBound">
        <FooterStyle BackColor="White" ForeColor="#333333" />
        <Columns>
            <asp:BoundField DataField="RoomId" HeaderText="编号" SortExpression="RoomId" />
            <asp:BoundField DataField="Number" HeaderText="房号" SortExpression="Number" />
            <asp:BoundField DataField="BedNumber" HeaderText="床位数" SortExpression="BedNumber" />
            <asp:BoundField DataField="GuestNumber" HeaderText="客人数" SortExpression="GuestNumber" />
            <asp:BoundField DataField="State" HeaderText="状态" SortExpression="State" />
            <asp:BoundField DataField="Description" HeaderText="描述" SortExpression="Description" />
            <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:ImageButton ID="ImageButton2" runat="server" ImageUrl="~/images/edit.gif" CommandArgument='<%# Eval("RoomId") %>' CommandName="ed" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField ShowHeader="False" HeaderText="删除" >
                <ItemTemplate>
                    &nbsp;<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl='~/images/delete.gif'
                        CommandArgument='<%# Eval("RoomId") %>' CommandName="del" />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
        <RowStyle BackColor="White" ForeColor="#333333" />
        <SelectedRowStyle BackColor="#339966" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#336666" ForeColor="White" HorizontalAlign="Center" />
        <HeaderStyle BackColor="#336666" Font-Bold="True" ForeColor="White" />
    </asp:GridView>

 

------------------------------------------------------------

注意事项:

1.控件中添加两个事件RomCommand和RowDataBound

OnRowCommand="GridView1_RowCommand"

 OnRowDataBound="GridView1_RowDataBound"

2注意模板项的属性和事件

-------------------------------------

  <asp:TemplateField ShowHeader="False" HeaderText="编辑">
                   <ItemTemplate>
                    <asp:ImageButton ID="ImageButton2" runat="server" ImageUrl="~/images/edit.gif" CommandArgument='<%# Eval("RoomId") %>' CommandName="ed" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField ShowHeader="False" HeaderText="删除" >
                <ItemTemplate>
                    &nbsp;<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl='~/images/delete.gif'
                        CommandArgument='<%# Eval("RoomId") %>' CommandName="del" />
                </ItemTemplate>
            </asp:TemplateField>

-------------------------------------------------------

CommandArgument='<%# Eval("RoomId") %>'//为属性id赋值,为后台调用方法用到id的值

 CommandName="ed" //定义一个名为后台判断

-----------------------------------下面是后台两个事件的代码-----------------------------------------------

 protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName=="del")//删除
        {
           // this.Response.Write("<script type='text/javascript'>alert('是否删除');</script>");//跳到新也没在提示
            //this.Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('是否删除');</script>");//当前有提示
            RoomManager.DeleteRoomByRoomId(Convert.ToInt32(e.CommandArgument));
            Response.Redirect("AllRoom.aspx");//重定向
        } if (e.CommandName=="ed")//编辑
        {
             
            Page.Server.Transfer("EditRoom.aspx?roomId="+e.CommandArgument.ToString());

        }
    }

//斑马线效果

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {  //为选中的row添加样式
            e.Row.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor;this.style.backgroundColor='yellow'");
            e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor");
            ImageButton imgbtn = (ImageButton)e.Row.FindControl("ImageButton1");//为删除按钮添加删除事件,
            imgbtn.Attributes.Add("onclick", "return confirm('您确认删除');");//当确定后才跳到GridView1_RowCommand进行判断,否则不进入
        }

    }

///之外请为控件指定数据源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

heguikun

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

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

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

打赏作者

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

抵扣说明:

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

余额充值