macaca310
@macaca310

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

tdを@onclickでクリックするとプルダウンに変化し、プルダウンの内容を選択するとtdに文字列が残って欲しい

前提

開発環境:Visual Studio2022 .NET6.0 BlazorWASM
動作確認環境:Windows11, edge

下図のようなテーブルを作っております。将来的にはデータグリッドとするつもりです。
thのクリックでそれぞれの列に合わせたソートが可能です(実現済み)
タイトルなし.png

今回実現したいこと

・ランクとある列のtdをA~Eの文字列で編集可能としたく思います。
・tdを@onclickでクリックするとプルダウンに変化し、プルダウンの内容を選択するとtdに文字列のみが残って欲しい。
また、行ごとに編集が行えるようにしたいです。

解決したいこと

Windows 11 の Visual Studio 2022 で Blazor WASMアプリをターゲットフレームワーク .NET 6.0 で作っています。
tdタグをクリックする機能を実装中に以下のエラーメッセージが発生し、ビルドが通らないので大変困っております。まず何よりもビルドを通したいです。

発生している問題・エラー

以下のようなエラーが出ております。
エラーメッセージ
CS0501	'DataGridHand02.changeEdit()' は abstract、extern、または partial に指定されていないため、本体を宣言する必要があります
ワーニング
CS8974	メソッド グループ 'changeEdit' を非デリゲート型 'object' に変換中です。このメソッドを呼び出すつもりでしたか?

該当するソースコード

html

<td class="editableTD" @onclick="changeEdit">
                        @((MarkupString)messageText)
                        @changeEdit{
                        @messageText
                        <EditForm Model="Lank" onchange="onselect">
                            <InputSelect id="Lank"
                                         @bind-Value="Lank"
                                         class="form-control">
                                @foreach (var it in Lanks)
                                {
                                    <options>@it</options>
                                }
                            </InputSelect>
                        </EditForm>
                        }
                    </td>

blazor

@code {
    [Parameter]
    public string Lank { get; set; }
    public string messageText = "ー";
    public void changeEdit();
    private string[] Lanks = new string[]
                    {
                        "A",
                        "B",
                        "C",
                        "D",
                        "E",
                        };
}

補足:一応動いているコード

html

<td class="editableTD" @onclick="changeEdit">@((MarkupString)messageText)</td>

blazor

@code {
    public string messageText = "ー";
    private void changeEdit()
    {

        messageText =
        "<select name='select106' onchange='change(this)'><option>選択</option><option value='1番目'>A</option><option value='2番目'>B</option><option value='3番目'>C</option><option value='4番目'>D</option><option value='5番目'>E</option></select>";
    }
}

一応やりたいことの途中までは動いている様子です。

タイトルなし02.png

自分で試したこと

ネット上のコードからお借りしてきたものなので、そもそもよく分かっていないのが問題だと思います。
その後もネット上のコードから書き換えを試しているのですが、ビルドが通りません。
また、Visual Studioのサジェスチョン機能でコードを改変してみても同様でした。
一応動いているコードはあるのですが、プログラムと呼ぶにもお恥ずかしい内容で、メンテナンス性も最悪だと思います。
また、これでは該当コードを張り付けたtdが全て同時に編集状態になるのも問題です。

0

No Answers yet.

Your answer might help someone💌