2011-12-13 2 views
1

ObjectDataSource에 바인딩 된 표로 작업하고 있습니다. 이 표에는 DropDownList (AutoPostBacktrue) 및 Rating 인 열이 있습니다. 이러한 컨트롤을 통해 사용자는 즉시 데이터를 변경할 수 있습니다.ASP.NET GridView 이벤트 처리기 전에 데이터 바인딩

RowCommand 달리 (편집합니다 ButtonField에서) 컨트롤 '핸들러 (각각 SelectedIndexChangedRatingChanged) 화재 바인딩 후 데이터입니다. 따라서 최신 데이터가 없거나 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"); 
    } 
} 
+0

왜 다시 바인드합니까? 처음은 언제입니까? –

+0

버튼 처리기가 시작되기 전에 ASP.NET 데이터 바인딩 마법에 의해 호출됩니다 (솔직히 세부 사항을 잘 모릅니다.) 어쨌든 : 몇 가지 코드를 추가했는데'ObjectDataSource1_Selecting' 메서드는 내 버튼의 이벤트 처리기 인'Unnamed2_Click '보다 먼저 나타납니다. –

답변

0

당신은 데이터 소스를 설정해야하고 페이지에서는 onLoadComplete 이벤트에 명시 적으로 그리드를 데이터 바인딩.

+0

고맙지 만,'no2'의'Click' 이벤트는 전혀 발생하지 않습니다. –