2013-05-30 2 views
0

기본적으로 저는 objectdatasource 인 클래스를 반영하고 있으며 매개 변수를 즉석에서 생성 할 수 있어야합니다. 그러나 실제로 매개 변수의 Propertyinfo에 추가하는 방법을 모른다. 이 모든 작업은 즉시 수행되기 때문에 aspx 메서드가 작동하지 않습니다. Reflection을 사용하여 objectdatasource를 설정하십시오. ParameterCollection을 사용하는 매개 변수

내가 무엇을 가지고 있지만, 오류는 다음

 var dataSourceType = typeof(DataSource).Assembly.GetType("DataSource", true); 
    var datafield = Activator.CreateInstance(dataSourceType); 
    PropertyInfo pinfo = datafield.GetType().GetProperty("Parameters"); 

    ParameterCollection parmCollection = new ParameterCollection(); 
    QueryStringParameter myParm = new QueryStringParameter("ber", DbType.String, "ber"); 
    parmCollection.Add(myParm); 
    pinfo.SetValue(pinfo, parmCollection, null); 

그래서 그래 내가 기본적으로 데이터 소스를 만들 컬렉션 개체를 추가하려고하고 내 매개 변수 수집을 부착 할 때 때 그리드 또는 다른 제어 로드하면 소스에서 databind를 수행 할 수 있습니다.

var dataSourceType = typeof(DataSource).Assembly.GetType("DataSource", true); 
var datafield = Activator.CreateInstance(dataSourceType); 
PropertyInfo pinfo = datafield.GetType().GetProperty("Parameters"); 

ParameterCollection parmCollection = new ParameterCollection(); 
QueryStringParameter myParm = new QueryStringParameter("ber", DbType.String, "ber"); 
parmCollection.Add(myParm); 
pinfo.SetValue(datafield, parmCollection, null); 

을 그리고 네임 스페이스와 클래스의 이름 ("데이터 소스를 포함하시기 바랍니다 :

+0

http://stackoverflow.com/questions/3862226/dynamically-create-a-class-in-c-sharp –

답변

0

잘 모르겠어요,하지만 당신은 오타가 ... 대신이 말은하지 것이다 "문자열). 코드를 테스트 한 결과 성공적으로 완료되었습니다. :)

이 코드는 지정된 값으로 데이터 필드 객체의 매개 변수 속성을 설정합니다.

pinfo.SetValue(«object», parmCollection, null); 

당신의 의도가 조금 혼동입니다 ... 당신이 상대하고있는 개체를 캐스팅 할 수없는 이유 : 당신이 매개 변수를 다른 데이터 소스 개체의 속성을 설정하려는 경우 당신은 마지막 줄을 대체 할 수 ObjectDataSource로 사용하고 원하는 속성에 액세스/설정 하시겠습니까?

object dataSource = new ObjectDataSource(); 

(...) 

var objectDataSource = dataSource as ObjectDataSource; 
if (objectDataSource != null) 
{ 
    var selectParams = objectDataSource.SelectParameters; 
    selectParams.Clear(); 
    selectParams.Add(new QueryStringParameter("ber", DbType.String, "ber")); 
} 

는 나는 그것이 도움이되기를 바랍니다.

+0

오타를 찾아 주셔서 감사하지만 불행히도 그게 전부입니다. 나는 진짜 문제가 나를위한 것이라고 생각한다. 매개 변수 canwrite = false –