【发布时间】:2012-01-19 09:00:32
【问题描述】:
我正在使用绑定到ObjectDataSource 的网格。在此网格中,有一列带有 DropDownList(AutoPostBack 是 true)和 Rating。这些控件应该使用户能够立即更改数据。
与RowCommand(编辑:在ButtonField 中)不同,控件的处理程序(分别为SelectedIndexChanged 和RatingChanged)在数据绑定之后触发。因此,我要么没有最新数据,要么必须通过调用DataBind 再次绑定。这些都不是那么酷。控件不支持行命令。
解决这个问题的最佳方法是什么?我是否理解了一些错误的概念,或者处理了错误的事件?
这里有一些代码:
public partial class _Default : System.Web.UI.Page
{
protected void ObjectDataSource1_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
{
e.ObjectInstance = new MyDataSource();
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
// before selecting with ButtonField
// after selecting with TemplateField + Control Event
Debug.WriteLine("Command Handler");
}
protected void Unnamed2_Click(object sender, EventArgs e)
{
// Button event handler, after selecting
Debug.WriteLine("Button Click Handler");
}
protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
// Selecting invoked by ASP.NET data binding
Debug.WriteLine("Selecting");
}
}
【问题讨论】:
-
为什么还要说绑定?第一次是什么时候?
-
第一次是在按钮处理程序触发之前,由 ASP.NET 数据绑定魔术调用(老实说,我不太了解细节,我想我会深入研究)。无论如何:我添加了一些代码,
ObjectDataSource1_Selecting方法在Unnamed2_Click之前被命中,这是我的按钮的事件处理程序。
标签: c# asp.net data-binding gridview objectdatasource