ObjectDataSource
에 바인딩 된 표로 작업하고 있습니다. 이 표에는 DropDownList
(AutoPostBack
은 true
) 및 Rating
인 열이 있습니다. 이러한 컨트롤을 통해 사용자는 즉시 데이터를 변경할 수 있습니다.ASP.NET GridView 이벤트 처리기 전에 데이터 바인딩
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 '보다 먼저 나타납니다. –