我有一个数据网格视图,可以从数据库中收集数据。网格有4列。其中一列是城市名称。在sql代码中,我选择城市代码而不是城市名称。
我已将此列转换为模板字段。在编辑模式下,我能够放置下拉列表并提供数据绑定,以便用户能够选择城市。
然而在itemtemplate模式中我有标签字段。我如何提供可以从数据库中获取数据的数据绑定?
答案 0 :(得分:0)
您可以通过以下某种方式实现
第一种方法
使用子查询或连接声明您的数据源,例如SQL数据源/对象数据源,包括所需的值字段,并在分配其他值时将其分配给标签。
第二种方法
将ItemTemplate声明为
<ItemTemplate>
<asp:Label ID="lblCity" runat="server" Text='<%# LookupCity(DataBinder.Eval(Container.DataItem, "CityCode")) %>'></asp:Label>
</ItemTemplate>
在代码隐藏中将LookupCity函数声明为
protected string LookupCity(object idObj)
{
string CityCode = idObj.ToString();
if (string.IsNullOrEmpty(CityCode))
// return if CityCode is not valid value
return null;
// find the corresponding name from SQL Data Source named SQLDS_City
IEnumerator CityEnum = SQLDS_City.Select(new DataSourceSelectArguments()).GetEnumerator();
// loop through enum until required value is not found
while (CityEnum.MoveNext())
{
DataRowView row = CityEnum.Current as DataRowView;
if ((string)row["CityCode"].ToString() == CityCode)
return string.Concat(row["CityName"].ToString());
}
// return code if it is not found in the enum
return CityCode;
}
第三种方法
您也可以使用ItemTemplate的DropDownList控件。可以在此处找到一个示例Bind-DropDownList-in-ItemTemplate-of-TemplateField-in-ASPNet-GridView。要限制用户更改ItemTemplate中的值,您可以将其禁用仅用于显示目的。