ASP.NET Dynamic Data DisplayColumn Attribute Causi

2019-05-10 18:12发布

问题:

Using ASP.NET Dynamic Data with a LINQ to SQL DataContext from the Northwind Database...

When I add a DisplayColumn Attribute to one of my LINQ to SQL entity classes and reference a property from my custom code in the partial class, I lose the ability to sort by that column in the generated GridViews. I continue to lose the ability to sort even if I reference a non-custom property as the sortColumn.

Why is this happening?

Example Code:

[DisplayColumn("LastNameFirstName", "LastName", false)]
public partial class Employee
{
    public string LastNameFirstName
    {
        get { return LastName + ", " + FirstName; }
    }
}

Aaron

EDIT: The sortColumn specifies the column that will be used to sort this entity when it is used as a foreign key (in a DropDownList), not when it is being sorted in the GridView.

回答1:

That is correct because the property is not in the DB and linq to SQL will try to construct a T-SQL quert to the DB to get your entities. but will fail because these is no column with that name.



回答2:

This may be by Design...

The "sortColumn" specifies the column that will be used to sort this entity when it is used as a foreign key (in a DropDownList), not when it is being sorted in the GridView.



回答3:

You could try overriding the ToString() method that might work but it would only filter on the entity referenced by the FK relationship.



回答4:

Try adding [ScaffoldColumn(true)] - it might trick dynamic data to enable sorting

[DisplayColumn("LastNameFirstName", "LastName", false)]
public partial class Employee
{
    [ScaffoldColumn(true)]
    public string LastNameFirstName
    {
        get { return LastName + ", " + FirstName; }
    }
}