我有一个下拉列表,其中填充了后面代码中的数据。使用以下代码设置DataTextField
属性:
ddlItems.DataTextField = "ItemName";
我想将两个数据属性显示为DataTextField
。我尝试使用以下代码,但它不起作用。我在网上研究过但无法找到如何使用两种数据属性。
ddlItems.DataTextField = "ItemName" + "ItemDescription";
我需要使用哪些代码才能执行此操作?
答案 0 :(得分:21)
您可以使用LinqToSql创建一个包含显示字段的新数据源,该显示字段按照您希望的方式进行格式化,例如:
var datasource = from x in products
select new {
x.Id,
x.Code,
x.Description,
DisplayField = String.Format("{0} ({1})", x.Code, x.Description)
};
comboBox.DataSource = datasource;
comboBox.DataValueField = "Id";
comboBox.DataTextField = "DisplayField";
comboBox.DataBind();
答案 1 :(得分:6)
您可以使用ddlItems的Formatting事件,它允许您设置如何将某个项目转换为字符串的逻辑,或者如果在您的程序中使用任何意义,请使用像RepresentingString这样的属性返回Name +描述,并绑定到该属性。
更多答案和代码示例的类似问题: Format DropDownList.TextValue
答案 2 :(得分:4)
最简单的方法是在.aspx文件中:
<asp:DropDownList ID="ddlItems" runat="server" DataSourceID="YourDataSource" DataTextField='<%# Eval("Id")+" - "+Eval("Title") %>' ..... />
希望有用。
答案 3 :(得分:2)
I have done something similar to this in two ways: either in C# or SQL.
Matteo Gaggiano below gives a good example of the C# method:
Symbol
Or it can be done in SQL:
dataTable.Columns.Add(new DataColumn("Title", System.Type.GetType("System.String"), "ItemName + ' - ' + ItemDescription"));
ddlItems.DataSource = dataTable;
ddlItems.DataTextField = "Title";
ddlItems.DataValueField = "Id";
ddlItems.DataBind();
and then using the last four lines above in the C# code.
答案 4 :(得分:1)
我之前已经实现了这一点,但我使用了telerik radcombobox(能够包含项目模板)。模板只是一个html表格,我似乎“连接”了两个字段。我很确定标准的asp .net控件没有这个功能 - 但如果你环顾四周,你会找到第三方控件。
当然可以在业务层处理这种连接,并使用包含两个字段作为一个字符串的属性来定义新类型(struct可能是最好的)。
我确信还有其他方法可以实现这一目标(毫无疑问会有更有效的方式),这些只是我所知道的一些可能有用的方法。
答案 5 :(得分:1)
从对Format DropDownList.TextValue的评论开始,我了解了DataColumn.Expression(DataColumn.Expression Property,因此这可能是一个有效的解决方案(在我的情况下,它是完美的):
using(StreamWriter writer = File.CreateText(saveFilePath))
{
string sLine = "time;joint;pos_x;pos_y;poz_z";
writer.WriteLine(sLine);
}
using(StreamWriter writer = File.AppendText(saveFilePath))
{
string sLine = string.Format("{0:F3};{1};{2:F3};{3:F3};{4:F3}", Time.time, (int)joint, jointPos.x, jointPos.y, jointPos.z);
writer.WriteLine(sLine);
}
答案 6 :(得分:1)
只需从后面的代码中填写下拉列表
HTML
<asp:DropDownList ID="ddlSample" runat="server"></asp:DropDownList>
VB.NET
Dim Conn As SqlConnection
Dim Comm As SqlCommand
Dim Read As SqlDataReader
Conn = New SqlConnection()
Conn.ConnectionString = ConfigurationManager.ConnectionStrings("Read").ConnectionString
Comm = New SqlCommand()
Comm.CommandType = CommandType.Text
Comm.CommandText = "SELECT * FROM TABLE"
Comm.Connection = Conn
Comm.Connection.Open()
Read = Comm.ExecuteReader()
ddlSample.Items.Insert(0, New ListItem("Seleziona", ""))
While Read.Read()
ddlSample.Items.Insert(1, New ListItem(Read("ID") & " - " & Read("Desc")), ReadLivelli("ID")))
End While
Read.Close()
Comm.Connection.Close()
Comm.Dispose()
Conn.Dispose()
答案 7 :(得分:0)
如果您使用实体框架代码进行编码,则首先可以创建一个名为NameAndDescription
的新字段并设置ddlItems.DataTextField = "NameAndDescription"
。该字段可以按如下方式创建:
public String NameAndDescription
{
get { return this.ItemName + this.ItemDescription; }
}
答案 8 :(得分:0)
试试这个:
select std.Student_ID,std.Student_Name+' - '+ std.Admission_ID Student_Name
from Student_tbl std , School_tbl sch
where sch.School_ID = '" + School_ID + "' and std.Current_Class = '" + Class_ID + "'
and std.Section_ID = '" + Section_ID + "'
DL_Student.DataTextField = "Student_Name";
DL_Student.DataValueField = "Student_ID";
答案 9 :(得分:0)
以下代码对我有用:
select id, ItemName + ' - ' + ItemDescription as 'yournamecolumn' from `yourtable`
ddlItems.DataTextField = "yournamecolumn";
ddlItems.DataValueField = "id";
ddlItems.DataBind();
答案 10 :(得分:0)
objDT.Columns.Add("FullName", GetType(String), "time + ' ' + location")
objDT.AcceptChanges()
ddlPickUp.DataSource = objDT
ddlPickUp.DataTextField = "FullName"
ddlPickUp.DataValueField = "location"
ddlPickUp.DataBind()