ASP.NET 双击Gridview编辑

界面如图:


 

 

 

 

 

 

 

 

 

需要实现功能:双击Gridview,获取当前行所在数据,把数据带到信息区域,同时信息区域新增显示为编辑。

 

实现方法1:双击Gridview后,带出id并且添加双击事件window.location.href=当前页面url?id=当前数据的id。
然后PageLoad事件里判断是否有request.QuerryString["id"]是否为null,并作出相应判断。
缺点:页面有刷新,效率低。用户体验差。

方法2:(注:示例为三层机构,数据层代码很简单。不贴出来了。)

首先在页面添加一个HiddenField隐藏控件,改id为hfState。如图:

信息区域添加名为lblState的Label控件。
房间文本框名为txtNo,
房间类型下拉列表为ddltype。
数据为手动添加:(数据库中用int保存)

<asp:DropDownList ID="ddltype" runat="server">

                       <asp:ListItem Value="0">-请选择-asp:ListItem>

                        <asp:ListItem Value="1">单人间asp:ListItem>

                        <asp:ListItem Value="2">标准间asp:ListItem>

                        <asp:ListItem Value="3">商务间asp:ListItem>

                        <asp:ListItem Value="4">总统套房asp:ListItem>

asp:DropDownList>

为实现页面无刷新,采用JavaScript。

function setValue(num,id,type)

        {

            document.getElementById("lblState").innerText="编辑";

            document.getElementById("txtNo").value=num;

            //给隐藏域赋值为当前id

            document.getElementById("hfState").value=id;

            var ddl= document.getElementById("ddltype");

            ddl.value=type;

        }

num为房间编号,id为主键,type为类型value。

主要部分代码:

protected void gvRoomInfo_RowDataBound(object sender, GridViewRowEventArgs e)

    {

 

        if (e.Row.RowType == DataControlRowType.DataRow)

        {

            //设置房间类型由数字显示为中文

            Label lbltype = e.Row.FindControl("lblType") as Label;

            e.Row.Attributes.Add("ondblclick", "setValue('" + e.Row.Cells[0].Text + "'," + gvRoomInfo.DataKeys[e.Row.RowIndex][0] + ","+lbltype.Text+")");

 

           //房间类型判断代码略。。。

        }

    }

你可能感兴趣的:(小技术备份)