将ASP.NET DropDownList DataTextField绑定到方法吗?
时间:2020-03-06 14:44:10 来源:igfitidea点击:
无论如何,ASP.NET DropDownList中的项目是否将其Text或者Value绑定到源上的方法而不是属性上?
解决方案
唯一的方法是处理DropDownList的Databinding事件,调用该方法并自行设置DropDownList项目中的值。
声明式地:
<asp:DropDownList ID="ddlType" runat="server" Width="250px" AppendDataBoundItems="true" DataSourceID="dsTypeList" DataTextField="Description" DataValueField="ID">
<asp:ListItem Value="0">All Categories</asp:ListItem>
</asp:DropDownList><br />
<asp:ObjectDataSource ID="dsTypeList" runat="server" DataObjectTypeName="MyType" SelectMethod="GetList" TypeName="MyTypeManager">
</asp:ObjectDataSource>
上面的方法绑定到一个返回通用列表的方法,但是我们也可以绑定到一个返回DataReader的方法。我们也可以在代码中创建dataSource。
这是我的解决方案:
<asp:DropDownList ID="dropDownList" runat="server" DataSourceID="dataSource" DataValueField="DataValueField" DataTextField="DataTextField" />
<asp:ObjectDataSource ID="dataSource" runat="server" SelectMethod="SelectForDataSource" TypeName="CategoryDao" />
public IEnumerable<object> SelectForDataSource()
{
return _repository.Search().Select(x => new{
DataValueField = x.CategoryId,
DataTextField = x.ToString() // Here is the trick!
}).Cast<object>();
}

