1

ユーザーがフォームのクライアント側でアイテムのリストを作成し、フォームが送信されたときにリスト全体をサーバーに送信できるようにしたいと考えています。

各項目には、設定可能ないくつかのプロパティがあります。たとえば、注文モデルは次のとおりです。

class Order
{
    int Id;
    string Description;
    Guid UserId;
    string Product;
}

ユーザーは、フォームを送信する前に、必要な数の注文を追加および構成できる必要があります。

InCell 編集を使用して、Telerik グリッドでこれを行うことができると考えました。残念ながら、各フィールドで使用できるオプションのリストは、他のフィールドで選択した値に基づいて変わります。JavaScript イベント ハンドラーから他の UI 要素にアクセスできなかったため、InCell 編集でこれを機能させることができませんでした。

通常の InLine 編集でもこれを実行しようとしましたが、返されるアイテムは追加される新しい Order だけです。GridModel にアクセスして新しい Order を追加できませんでした。ユーザーが編集を完了するまで、注文リストを保持したくありません。

どんな助けでも大歓迎です。

編集: 独自のリストを作成するソリューションを使用すると、カスケード コンボボックスでこの問題が発生します。各コンボボックスには、リスト内のインデックスに基づいて「UserId_0」のような名前が付けられます。

しかし、どうすれば下流のリストを取得できますか?
ここに私の2つのコンボボックスがあります:

 <td>
        @(Html.Telerik().ComboBox()
            .Name("UserId_" + i.ToString())
            .BindTo(new SelectList(Model.UserIds, "Id", "Name"))
            .Placeholder("Select UserId...")
            .AutoFill(true)
            .CascadeTo("Product_" + i.ToString())
            .SelectedIndex(0))
 </td>
 <td>
       @(Html.Telerik().ComboBox()
            .Name("Product_" + i.ToString())
            .AutoFill(true)
            .DataBinding(binding => binding.Ajax().Select("GetProducts", "Order"))
            .Placeholder("Select Product...")
            .SelectedIndex(0))
 </td>

そして、私の Controller メソッドは次のようになります。それは地獄のようにハックですが、それ以外の方法で値にアクセスするにはどうすればよいですか?

    public JsonResult GetProducts(Guid? UserId)
    {
        // Hack!
        ValueProviderResult userResult = ValueProvider.GetValue("UserId");
        for (int i=0; i < 10; i++)
        {
            userResult = ValueProvider.GetValue("UserId_" + i);
            if (userResult != null)
            {
                break;
            }
        }

        if (userResult != null)
        {
            // Get list of products based on value
            return Json(new SelectList(productList, "Id", "Name"));
        }
        else
        {
            return Json(null);
        }
    }
4

1 に答える 1

1

一部のウィジェットでこれを達成するために時間を無駄にしないでください。アイテムのコレクションをサーバーに送信する方法を確認し、チェックボックスなどを使用して独自のフォームを実装することをお勧めします。

いくつかのウィジェットを使用したい場合は、このデモと同様の方法でグリッドを試すことができます。

于 2013-03-07T19:17:31.923 に答える