gridview数据绑定itemptemplate字段

时间:2015-10-11 13:27:38

标签: asp.net gridview data-binding

我有一个数据网格视图,可以从数据库中收集数据。网格有4列。其中一列是城市名称。在sql代码中,我选择城市代码而不是城市名称。

我已将此列转换为模板字段。在编辑模式下,我能够放置下拉列表并提供数据绑定,以便用户能够选择城市。

然而在itemtemplate模式中我有标签字段。我如何提供可以从数据库中获取数据的数据绑定?

1 个答案:

答案 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中的值,您可以将其禁用仅用于显示目的。