微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – DetailsView仅在2次点击后才更新和更改,取消不显示readonly中的可编辑值

我创建了一个在日历中选择日期后出现的详细信息视图.此详细信息视图通过代码后面的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
        }
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐