我在详情视图中有一个下拉列表。现在我使用DataTextField显示文本,但现在我想再添加一个textvalue。
我的aspx:
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataKeyNames="nFuturesId"
DataSourceID="FutureCommodityODS" DefaultMode="Insert" OnItemInserting="DetailsView1_ItemInserting"
SkinID="detailsviewSkin" OnItemInserted="DetailsView1_ItemInserted">
<Fields>
<asp:TemplateField HeaderText="Future" SortExpression="strFutureName">
<InsertItemTemplate>
<BrummerComp:SortableDropDownList ID="DropDownListFuturesInsert" runat="server" DataSourceID="FutureNameODS"
DataTextField="strFutureName" DataValueField="nFuturesId" SkinID="BCdropdownlistSkin">
</BrummerComp:SortableDropDownList>
</InsertItemTemplate>
</asp:TemplateField>
</Fields>
</asp:DetailsView>
我还想添加一个名为strFutureShortName的DataTextField列。我希望它是这样的:
DataTextField="strFutureName, strFutureShortName"
我的想法是我可以在我的Page_Load中获取DropDownList并尝试从那里添加值:
if (!IsPostBack) {
DropDownList ddl = (DropDownList)DetailsView1.FindControl("DropDownListFuturesInsert");
ddl.DataTextField = "strFutureName"; //Here I would like "strFutureName" + "strFutureShortName"
}
但是这段代码不起作用(当我在.aspx中删除了属性DataTextField时)。
有谁知道我怎么能这样做?
编辑:
我想我找到了DDL被绑定的地方,它使用这样的表格映射:
global::System.Data.Common.DataTableMapping tableMapping = new global::System.Data.Common.DataTableMapping();
tableMapping.ColumnMappings.Add("strFutureName", "strFutureName");
答案 0 :(得分:1)
您无法在文本字段中直接添加多个值。您必须为您的实体创建一个单独的属性,然后将其添加为日期文本字段。
例如。让我们上个人课
public class Person
{
public int PersonId {get;set;}
public string FirstName { get; set; }
public string LastName { get; set; }
public string FullName
{
get
{
return string.Format("{0},{1}", FirstName, LastName);
}
}
}
现在您需要将FullName设置为datasource。
<BrummerComp:SortableDropDownList ID="DropDownListFuturesInsert" runat="server" DataSourceID="FutureNameODS"
DataTextField="FullName" DataValueField="PersonId" SkinID="BCdropdownlistSkin">
</BrummerComp:SortableDropDownList>