웹 응용 프로그램을 다루고 있습니다. 내게 묻는 것은 페이지가로드 될 때 내 드롭 다운 목록에 표시하고 저장할 특정 속성이있는 인덱스 0이 표시된다는 것입니다.리팩토링, selectedIndexChanged 이벤트를 기반으로 DataSource 유형 변경, C#
이를 바탕으로 목록을 보유하는 두 번째 다운 목록이 있습니다.
다음으로 selectedIndexChanged
이벤트에서 ddl1의 색인을 변경해야합니다. ddl2의 데이터가 변경되어야합니다.
채워지는 데이터는 모두 데이터베이스 쿼리의 데이터입니다.
저는 리팩토링을 진행하고 있으며, 일부 데이터를 bindControls
메소드로 전달할 수있는 방법을 찾고 있습니다. 나는 또한 메소드에 전달할 부울 값을 기반으로 형변환 될 수있는 일반 데이터 유형을 전달해야합니다.
여기 예를 들어 나는 내가 원하는이 데이터 소스를 할당 할 수있는 방법이 있어야한다 알고
IQueryable<BankAccount> accountQuery = db.BankAccounts.Where(x => x.ClientId
== clientId && x.AccountNumber != accountNumber);
private void bindControls(DropDownList ddl, string textFieldProp, string
dataFieldProp, boolean isBillPayment, object dataSource)
{
//this is where my confusion is... i don't know how to change the type
//of the object
if(isBillPayment == true)
dataSource = typeof(IQueryable<BankAccount>);
ddlDataSource = dataSource.ToList()
ddlDataTextField = textFieldProp;
ddlDataValueField = dataFieldProp;
ddl.DataBind();
}
입니다. 내가 게시 한 쿼리는 데이터 소스가 의도하는 것의 예일 뿐이며 BankAccounts, TransactionTypes 또는 Payees에서 세 가지 가능한 테이블 쿼리가 있습니다.
죄송합니다. 말씀해 주셨으면합니다. 불편을 끼쳐 드려 죄송합니다.
private void bindControls<IQueryable<T>>(DropDownList ddl, string textFieldProp, string
dataFieldProp, boolean isBillPayment, IQueryable<T> dataSource)
{
// I don't think you really need this.
// if(isBillPayment == true)
// dataSource = typeof(IQueryable<T>);
ddlDataSource = dataSource.ToList()
ddlDataTextField = textFieldProp;
ddlDataValueField = dataFieldProp;
ddl.DataBind();
}
앞서 .ToList()
을 캐스팅하고 bindControls()
방법 대신 IQueryable
에 있음을 전달 추천 : 어쩌면 이제 더 의미
게시 된 코드는 의미가 없습니다. 왜 유형을 바꾸고 싶습니까? 왜 우리에게'accountQuery'를 보여주고 있습니까?하지만 당신의 코드에서는 사용되지 않습니다. – CodingYoshi