Zer*_*ity 10 .net c# asp.net drop-down-menu
我的存储过程是这样的
SELECT Id, StudentName
FROM xyz
Run Code Online (Sandbox Code Playgroud)
我在asp.net中有一个下拉列表,我将其加载为:
ddlA.DataSource = // Some source
ddlA.DataTextField = "Id" + " -" + "StudentName";
ddlA.DataValueField = "Id";
ddlA.DataBind();
ddlA.Items.Insert(0, new ListItem(" Select one", "0"));
Run Code Online (Sandbox Code Playgroud)
但在Databind()
声明中,我收到此错误:
System.Web.HttpException:DataBinding:'System.Data.DataRowView'不包含名为'Id-StudentName'的属性.
在下拉列表的文本部分,我想显示连接的值Id - StudentName
.
我该怎么做?
小智 15
您可以使用LINQ创建一个包含displayfield的新数据源,该显示字段按您希望的方式进行格式化,例如:
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();
Run Code Online (Sandbox Code Playgroud)
aba*_*hev 14
DropDownList1.DataTextFormatString = "{0} - {1}";
DropDownList1.DataTextField = "Id,StudentName";
Run Code Online (Sandbox Code Playgroud)
它似乎无法自动实现,例如,请参阅此MS Connect票证.
这样以编程方式执行:
foreach (var row in table.Rows)
{
row.Field<string>("text") = String.Format(..);
}
Run Code Online (Sandbox Code Playgroud)
要么
foreach (var item in data)
{
new ListItem { Text = String.Format(..); };
}
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以通过以下代码实现它
dsStudent.Tables[0].Columns.Add("IdWithStudenName",typeof(string),"Id + ' - ' + StudenName");
DropDownList1.DataSource = dsStudent;
DropDownList1.DataTextField = "IdWithStudenName";
DropDownList1.DataBind();
DropDownList1.Items.Insert(0, new ListItem("Please select"));
Run Code Online (Sandbox Code Playgroud)
如需更多了解请参考这里.