加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 单击GridView行上的任意位置以进入编辑模式

发布时间:2020-12-16 07:03:55 所属栏目:asp.Net 来源:网络整理
导读:我想在GridView行的任何地方单击一下,复制编辑按钮的相同功能. 下面的代码执行此操作,但存在一个主要问题:如果用户单击一个文本框到下一个文本框,则编辑命令将再次触发,对上一个文本框所做的更改将恢复为其原始值. 有关如何解决此问题的任何建议? 或者,有
我想在GridView行的任何地方单击一下,复制编辑按钮的相同功能.

下面的代码执行此操作,但存在一个主要问题:如果用户单击一个文本框到下一个文本框,则编辑命令将再次触发,对上一个文本框所做的更改将恢复为其原始值.

有关如何解决此问题的任何建议?

或者,有没有更好的方法来实现这一目标?

编辑:通过添加row.RowState.HasFlag(DataControlRowState.Edit)的检查解决了这个问题.见下面的代码:

protected override void Render( System.Web.UI.HtmlTextWriter writer )
{
    foreach( GridViewRow row in gvwOrderItems.Rows )
    {
        if( row.RowType == DataControlRowType.DataRow &&
            row.RowState.HasFlag( DataControlRowState.Edit ) == false )
        {
            // enable click on row to enter edit mode
            row.Attributes["onclick"] =
                ClientScript.GetPostBackClientHyperlink( gvwOrderItems,"Edit$" + row.DataItemIndex,true );
        }
    }
    base.Render( writer );
}

解决方法

检查row.RowState.HasFlag(DataControlRowState.Edit).

protected override void Render( System.Web.UI.HtmlTextWriter writer )
{
    foreach( GridViewRow row in gvwOrderItems.Rows )
    {
        if( row.RowType == DataControlRowType.DataRow &&
            row.RowState.HasFlag( DataControlRowState.Edit ) == false )
        {
            // enable click on row to enter edit mode
            row.Attributes["onclick"] =
                ClientScript.GetPostBackClientHyperlink( gvwOrderItems,true );
        }
    }
    base.Render( writer );
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读