我正在处理一个Web应用程序。我的问题是,当页面加载时,我的下拉列表显示索引0,并显示和存储特定属性。
基于此,有一个第二个下拉列表来保存一个列表。
接下来在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的三种不同的可能表查询。
抱歉,我应该提到这一点,我很抱歉与它有任何混淆。也许现在更有意义答案 0 :(得分:0)
使用泛型:
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
。
...但我真的不明白为什么你这样做。在我看来,你不需要你的布尔开关。