GithubHelp home page GithubHelp logo

Comments (7)

vnbaaij avatar vnbaaij commented on June 2, 2024

You can already do that, just not directly in the parameter (example comes from the demosite):

@inject DataSource Data

<FluentDataGrid Items="@Data.People" style="width: 600px;">
    <TemplateColumn Title="Person" SortBy="@sortByName">
        <div class="flex items-center">
            <img class="flag" src="_content/FluentUI.Demo.Shared/flags/@(context.CountryCode.ToLower()).svg" alt="Flag of @(context.CountryCode)" />
            <nobr>
                <strong>@context.LastName</strong>, @context.FirstName
            </nobr>
        </div>
    </TemplateColumn>
    <TemplateColumn Title="Bonus">
        <FluentButton Appearance="Appearance.Accent" @onclick="@(() => Bonus(context))">Regular</FluentButton>
        <FluentButton Appearance="Appearance.Accent" @onclick="@(() => DoubleBonus(context))">Double</FluentButton>
    </TemplateColumn>
</FluentDataGrid>


<p><strong>@message</strong></p>

@code {
    string message = string.Empty;

    GridSort<Person> sortByName = GridSort<Person>
        .ByAscending(p => p.LastName)
        .ThenAscending(p => p.FirstName);

    void Bonus(Person p) => message = $"You want to give {p.FirstName} {p.LastName} a regular bonus";

    void DoubleBonus(Person p) => message = $"You want to give {p.FirstName} {p.LastName} a double bonus";
}

What are you missing?

from fluentui-blazor.

kamazheng avatar kamazheng commented on June 2, 2024

My situation is the TemplateColumn created by foreach loop, it's dynamically created. Each TemplateColumn has different parameter for sorting. For example, we have dynamic object, the properties is not known until runtime, I need to pass each property to specific TemplateColumn for sorting, same as to have DataGrid context of List of key-value Dictionary.

from fluentui-blazor.

vnbaaij avatar vnbaaij commented on June 2, 2024

I think you can do that with a method that returns a GridSort result. You kan use the @key as a parameter for that method.

from fluentui-blazor.

kamazheng avatar kamazheng commented on June 2, 2024

I think you can do that with a method that returns a GridSort result. You kan use the @key as a parameter for that method.

The TemplateColumn has no onClick event before sort, cannot pass the current @key to the method which return GridSort.

from fluentui-blazor.

vnbaaij avatar vnbaaij commented on June 2, 2024

The @key comes from the foreach loop in your example. Passing that to a method does exactly the same as using the inline variant that you are suggesting

from fluentui-blazor.

kamazheng avatar kamazheng commented on June 2, 2024

The @key comes from the foreach loop in your example. Passing that to a method does exactly the same as using the inline variant that you are suggesting

Thanks. It works.
I have another question, when I add sortBy, the header row will add button, how to change the background-color of the button?
The XPath:
//*[@id="fdb48c27"]/fluent-data-grid/fluent-data-grid-row[1]/fluent-data-grid-cell[2]/fluent-button//button

The button is a shadow element, cannot easy to add css style for it.

image

from fluentui-blazor.

vnbaaij avatar vnbaaij commented on June 2, 2024

This is possible but goes directly against the purpose of this library: supplying components leveraging the Fluent UI design system.

You can target the component with CSS by using the ::deep selector and then specifying which part of the shadow DOM you want to target by using the standard ::partselector. Something like:

::deep > fluent-button::part(control){
...your css...
} 

Closing this as the original issue is not an issue and provided guidance works.

from fluentui-blazor.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.