为什么DetailsView中的DetailsView1_ItemUpdated事件 我都调用不到呀?

zhangCbrother 2010-05-15 03:01:07
前台代码:
<asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="125px"
onitemupdated="DetailsView1_ItemUpdated"
onitemupdating="DetailsView1_ItemUpdating"
onmodechanging="DetailsView1_ModeChanging">
<Fields>
<asp:TemplateField ShowHeader="False">
<EditItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True"
CommandName="Update" Text="更新"></asp:LinkButton>
 <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False"
CommandName="Cancel" Text="取消"></asp:LinkButton>
</EditItemTemplate>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False"
CommandName="Edit" Text="编辑"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Fields>
</asp:DetailsView>

后台代码:
UsersLogic bll = new UsersLogic();
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
dvData();
}
}
protected void DetailsView1_ModeChanging(object sender, DetailsViewModeEventArgs e)
{
DetailsView1.ChangeMode(e.NewMode);
dvData();
}
private void dvData()//绑定数据
{
DetailsView1.DataSource = bll.GetModelList("Id=2");
DetailsView1.DataBind();
}
protected void DetailsView1_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
{
//MessageHelper.Alert(this, "sss");

//e.Cancel = true ;

//dvData();

}

protected void DetailsView1_ItemUpdated(object sender, DetailsViewUpdatedEventArgs e)
{

DetailsView1.ChangeMode(DetailsViewMode.ReadOnly);
}

这里 DetailsView1_ItemUpdated都调用不到 请问是怎么回事呀!我找了好久 还是不知道哪里出问题了??
请各位高手帮帮忙!!
...全文
194 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangCbrother 2010-05-16
  • 打赏
  • 举报
回复
郁闷 !今天看了下 又能用了。。
不过还是谢谢 你们的帮忙!!
zhangCbrother 2010-05-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 koukoujiayi 的回复:]

根据楼主的代码做了一下,如:
1.前台代码和楼主一样:
2.后台:
C# code
//该事件和你的一样
protected void DetailsView1_ModeChanging(object sender, DetailsViewModeEventArgs e)
{
DetailsView1.ChangeMode(e.NewMode);
……
[/Quote]
可我是变不回去呀?
koukoujiayi 2010-05-15
  • 打赏
  • 举报
回复
根据楼主的代码做了一下,如:
1.前台代码和楼主一样:
2.后台:
    //该事件和你的一样
protected void DetailsView1_ModeChanging(object sender, DetailsViewModeEventArgs e)
{
DetailsView1.ChangeMode(e.NewMode);
dvData();
}

//保存并改变模式
protected void DetailsView1_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
{
//这里把数据保存到数据库的代码
//.......................
//......................
DetailsView1.ChangeMode(DetailsViewMode.ReadOnly);
dvData();
}

好象没什么问题!!
zhangCbrother 2010-05-15
  • 打赏
  • 举报
回复
谁懂的 教教我呀!!
真的不知道怎么做?
zhangCbrother 2010-05-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jianshao810 的回复:]

楼主可以用一个委托,在DetailsView1_ItemUpdating这里绑定事件,然后在执行绑定的时候 就触发该事件。(如果为null就不触发)触发完之后就去掉该事件关联
[/Quote]
能不能给点实例代码呀?
jianshao810 2010-05-15
  • 打赏
  • 举报
回复
楼主可以用一个委托,在DetailsView1_ItemUpdating这里绑定事件,然后在执行绑定的时候 就触发该事件。(如果为null就不触发)触发完之后就去掉该事件关联
zhangCbrother 2010-05-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sp1234 的回复:]

为什么不把你的 DetailsView1_ModeChanging 里边那两行注释掉呢?注释掉,你就知道哪里的问题了。
[/Quote]
把那注解了 连编辑都无法编辑了。。
zhangCbrother 2010-05-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 koukoujiayi 的回复:]

楼主是用代码绑定的吧!
如果是用代码绑定DetailsView的,是不能触发ItemUpdated事件的!
原因就是在你执行更新的时候又绑定了数据!
如果DetailsView绑定诸如ObjectDataSource或SqlDataSource等的数据源,
则会触发ItemUpdated事件的!!
[/Quote]

可不触发 ItemUpdated事件怎么执行 DetailsView1.ChangeMode(DetailsViewMode.ReadOnly);???
zhouwei7682719 2010-05-15
  • 打赏
  • 举报
回复
如果是用代码绑定DetailsView的,是不能触发ItemUpdated事件的!
是ItemUpdating
teerhu 2010-05-15
  • 打赏
  • 举报
回复
koukoujiayi 2010-05-15
  • 打赏
  • 举报
回复
楼主是用代码绑定的吧!
如果是用代码绑定DetailsView的,是不能触发ItemUpdated事件的!
原因就是在你执行更新的时候又绑定了数据!
如果DetailsView绑定诸如ObjectDataSource或SqlDataSource等的数据源,
则会触发ItemUpdated事件的!!
  • 打赏
  • 举报
回复
为什么不把你的 DetailsView1_ModeChanging 里边那两行注释掉呢?注释掉,你就知道哪里的问题了。

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧