将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>(); }