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

c# – DetailsView仅在2次点击后才更新和更改,取消不显示readonl

发布时间:2020-12-15 21:17:34 所属栏目:百科 来源:网络整理
导读:我创建了一个在日历中选择日期后出现的详细信息视图.此详细信息视图通过代码后面的select语句填充.这是我的问题列表: 我必须在编辑按钮上单击两次以在编辑模式下获取详细信息视图. 一旦进入编辑模式,我会看到更新和取消按钮,但我还必须在取消时单击两次才能
我创建了一个在日历中选择日期后出现的详细信息视图.此详细信息视图通过代码后面的select语句填充.这是我的问题列表:

>我必须在编辑按钮上单击两次以在编辑模式下获取详细信息视图.
>一旦进入编辑模式,我会看到更新和取消按钮,但我还必须在取消时单击两次才能返回到只读状态.
>当我处于编辑模式时,我有3行可以编辑,当我在readOnly模式下按两次取消时,这3行的值不再显示,它们只是空字段,尽管数据仍然在数据库.
>当我在编辑模式下更改内容并按更新时,我的详细信息视图就消失了.

代码隐藏:

protected void DetailView1_ModeChanging(Object sender,DetailsViewModeEventArgs e)
{
    if (e.NewMode == DetailsViewMode.Edit)
    {
        DetailsView1.ChangeMode(e.NewMode);
    }
    if (e.CancelingEdit)
    {
        DetailsView1.ChangeMode(DetailsViewMode.ReadOnly);   
    }
}

protected void DetailView1_ItemUpdating(Object sender,DetailsViewUpdateEventArgs e)
{
    DetailsView1.DataBind();
}

protected void DetailsView1_ItemUpdated(object sender,DetailsViewUpdatedEventArgs e)
{
    DetailsView1.DataBind();
}

标记:

<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" 
    OnModeChanging="DetailView1_ModeChanging" OnItemUpdating="DetailView1_ItemUpdating"
    OnItemUpdated="DetailsView1_ItemUpdated"
    AllowPaging="True" PageSize="5" HeaderText="Agenda"  CellPadding="10" 
    ForeColor="#333333" />

解决方法

您的问题出在DetailView1_ModeChanging中

The ModeChanging event is raised when a DetailsView control attempts to change between edit,insert,and read-only mode,but before the CurrentMode property is updated. This allows you to provide an event handler that performs a custom routine,such as canceling the mode change,whenever this event occurs.

从MSDN起

你需要使用Item Command事件

protected void DetailsView1_ItemCommand(object sender,DetailsViewCommandEventArgs e)
{
    if (e.CommandName == "Edit")
    {
        DetailsView1.ChangeMode(DetailsViewMode.Edit);
    }
}

编辑:

protected void DetailView1_ModeChanging(Object sender,DetailsViewModeEventArgs e)
    {
        if (e.NewMode == DetailsViewMode.Edit)
        {
            DetailsView1.ChangeMode(e.NewMode);
            DetailsView1.Datebind(); // add this and check
        }
        if (e.CancelingEdit)
        {
            DetailsView1.ChangeMode(DetailsViewMode.ReadOnly);   
            DetailsView1.Datebind(); // add this and check
        }
    }

(编辑:李大同)

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

    推荐文章
      热点阅读