Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在DetailsView中为绑定到ObjectDataSource的DropDownList中的项设置BackColor_Asp.net - Fatal编程技术网

Asp.net 在DetailsView中为绑定到ObjectDataSource的DropDownList中的项设置BackColor

Asp.net 在DetailsView中为绑定到ObjectDataSource的DropDownList中的项设置BackColor,asp.net,Asp.net,如何在自定义绑定表达式中正确调用方法?由于dropdownlist位于detailsview中,是否会出现并发症 asp.net代码: <asp:DropDownList ID="ddlExceptionEditStatus" runat="server" DataSourceID="odsExceptionsStatus" DataTextField="Name" DataValueField="StatusID" SelectedValu

如何在自定义绑定表达式中正确调用方法?由于dropdownlist位于detailsview中,是否会出现并发症

asp.net代码:

<asp:DropDownList ID="ddlExceptionEditStatus" runat="server"
      DataSourceID="odsExceptionsStatus"
      DataTextField="Name"
      DataValueField="StatusID"
      SelectedValue='<%# Bind("StatusID") %>' 
      BackColor="<%# SetBackColorProp(Container.DataItem) %>">
 </asp:DropDownList>

不会改变背景色。但是没有抛出异常。

因此,我有两个错误:

1) 我需要将Container.DataItem强制转换为用于ObjectDataSource的类对象。强制转换后,dropdownlist中每个项目的背景色与强制转换的Container.DataItem的StatusID匹配

2) 不幸的是,这给了所有项目相同的颜色,因为我希望每个项目的颜色反映它们自己附加到dropdownlist的值。这是因为dropdownlist在其内部的DetailsView之外有一个objectdatasource。因此,dropdownlist的selectedValue项决定了所有其他项的颜色

我决定按照Tim的建议,在databound事件中为每个项目绑定背景色设置:

protected string GetColor(string name)
{
    return FISBLL.StatusColors.GetColor(name);
}

protected void ddlExceptionEditStatus_DataBound(object sender, EventArgs e)
{
    foreach (ListItem item in ((DropDownList)sender).Items)
    {
        item.Attributes.Add("style", "background-color:" + GetColor(item.Text));
    }

}
正确的行为如下所示:


它是否有效,结果是否不理想,是否引发异常,是否什么都没有?它应该可以工作,尽管我更喜欢加载
DropDownList
protected string GetColor(string name)
{
    return FISBLL.StatusColors.GetColor(name);
}

protected void ddlExceptionEditStatus_DataBound(object sender, EventArgs e)
{
    foreach (ListItem item in ((DropDownList)sender).Items)
    {
        item.Attributes.Add("style", "background-color:" + GetColor(item.Text));
    }

}