我创建了一个在日历中选择日期后显示的详细信息 View 。此详细信息 View 是通过代码隐藏中的选择语句填充的。这是我遇到的问题列表:
- 我必须在编辑按钮上单击两次才能在编辑模式下获取详细信息 View 。
- 进入编辑模式后,我会看到更新和取消按钮,但我还必须点击两次取消才能返回只读状态。
- 当我处于编辑模式时,我有 3 行可以编辑,当我在只读模式下按取消两次时,这 3 行的值不再显示,它们只是空字段,尽管数据仍然存在在数据库中。
- 当我在“编辑”模式下更改某些内容并按“更新”时,我的详细信息 View 就消失了。
代码隐藏:
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
}
}
关于c# - DetailsView 仅在单击 2 次后不更新和更改,Cancel 不以只读方式显示可编辑值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5816518/