Formview로 바운드 객체를 수동으로 수정하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1214122

  •  06-07-2019
  •  | 
  •  

문제

ObjectDatasource와 함께 Formview를 사용하고 있습니다. 저장 버튼을 클릭하면 Data Bond Object가 ObjectDatasources 업데이트 메소드로 설정되기 전에 수정하려고합니다.

FormView의 업데이트 이벤트와 Object Data Source의 업데이트 이벤트를 시도했지만 데이터 바운드 객체에 액세스하는 방법을 알 수 없습니다. Formview.dataitem은 이러한 사건에서 무효입니다.

즉, DataItem이 ObjectDatasource UpdatemEthod로 전달되기 전에 데이터 아티템을 가로 채고 수정하고 싶습니다.

이 작업을 원하는 이유에 대해 좀 더 자세히 설명하기 위해 기능의 빌드와 데이터가 불가능한 양식에는 몇 가지 값이 있습니다. 컨트롤 중 하나는 확인란 목록입니다. Databinding 이벤트를 사용하여 수표를 채우고 있지만 이제 양식 값을 반영하기 위해 객체를 업데이트하는 방법도 필요합니다. 비슷한 상황을 가진 다른 컨트롤도 있습니다.

도움이 되었습니까?

해결책

자신의 비즈니스 객체 (일명 ObjectDatasource)를 작성하고 원래 ObjectDatasource 객체를 감싸는 이유는 무엇입니까? 그런 다음 원하는 것을 가로 채고 원래 ObjectDatasource Object의 저장 메소드로 ENROUTE를 수정할 수 있습니다.

다른 팁

나는 이것이 오래된 질문이라는 것을 알고 있지만, 같은 문제가 있었고 Bob이 찾고 있다고 생각하는 대답을 발견했습니다.

솔루션은 웹 양식에서 ObjectDatasource 업데이트 이벤트를 사용하는 것입니다. 업데이트 이벤트에는 ObjectDatasourcemethodeventArgs 객체가 매개 변수로 포함됩니다. ObjectDataSourcemethodeventArgs 클래스에는 "InputParameters"라는 제시가 포함되어 있으며이를 사용하여 데이터 객체에 액세스하고 업데이트가 발생하기 전에 내용을 수정할 수 있습니다. inputparameters 객체를 OrderedDictionary 유형으로 변환해야합니다 (전체 네임 스페이스는 System.Collections.specialized.OrderEdDictionary)

다음과 같이 보입니다.

protected void myObjectDataSource_Updating(object sender, ObjectDataSourceMethodEventArgs e)
{
    OrderedDictionary parameters = (OrderedDictionary)e.InputParameters;
    MyDataObject updatedData = (MyDataObject)parameters[0];
    DropDownList myDropDown = (DropDownList)FormView1.FindControl("myDropDown")
    updatedData.SomeDataValue = myDropDown.SelectedValue;
}

DataItem은 데이터베이닝시에만 사용할 수 있습니다.
그런 다음 데이터가 FormView 내부의 컨트롤로 바인딩됩니다.
업데이트하기 전에 MyFormView.FindControl (String ID)을 사용하여 바운드 값에 액세스하십시오.

양방향 데이터 바인딩이 작동하지 않으면 객체를 주입하고 수동으로 특성을 채우고 변경 사항을 업데이트하거나 커밋해야합니다.

업데이트 이벤트에 있으므로 FormView.dataitem은 아직 데이터 바인딩이 발생하지 않았기 때문에 NULL입니다. 관심있는 데이터가 포함 된 양식 제어를 통해 데이터에 액세스해야합니다.

관련 컨트롤의 OnDatabinding 이벤트 중에 데이터 수정을 적용하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top