1

GridViewを使用してASP.NETのコンポーネントのリストを表示しようとしています。同時に編集できるようにしようとしています。列の1つは、ユーザーが行を編集するときにリストから選択する必要がある文字列です。

だから私は次のことを試しました:

  1. BoundField行をItemTemplateに変換します
  2. グリッドビューのテンプレートウィンドウにドロップボックスを追加します
  3. 選択したアイテムを文字列にバインドしました

この時点で、ドロップボックスにリストアイテムが設定されていないため、エラーが発生します。だから私が疑問に思っている2つのことは次のとおりだと思います。

  1. ドロップボックス内のアイテムを動的に作成されたオプションのリストに割り当てるにはどうすればよいですか?
  2. 行が編集されているときにのみドロップボックスを表示するにはどうすればよいですか?

さて、私はビジュアルスタジオの「EditItemTemplate」フィールドを発見しました。これは#2に答えます。

そして今、ドロップボックスにデータオブジェクトのプロパティにリンクできるデータソースフィールドがあり、オプションリストを保持していることを発見しました。

4

1 に答える 1

0

あなたの中でDropDownListあなたはイベントを割り当て、OnDataBindingそれから私たちにイベントを割り当ててあなたDropDownListにカスタムデータを記入することができます。

例:

<Columns>
    <asp:TemplateField>
        <EditItemTemplate>
            <asp:DropDownList ID="yourDropDownList" runat="server"
                DataTextField="YourTextFieldName" DataValueField="YourValueFieldName"
                OnDataBinding="yourDropDownList_DataBinding"></asp:DropDownList>
        </EditItemTemplate>
    </asp:TemplateField>
</Columns>

次に、コードビハインドでOnDataBindingを実装します。

protected void yourDropDownList_DataBinding(object sender, System.EventArgs e) 
{ 
    DropDownList ddl = (DropDownList)(sender);
    // GetMyDropDownListData should return cached data so your not hitting your DB
    // each time. You can customize the data for each row here. Use the Eval command
    // to access the current rows databound values.
    ddl.DataSource = GetMyDropDownListData();
    ddl.DataBind();  // Now all the options will be loaded

    // Set the current field's selected value
    ddl.SelectedValue = Eval("YourSelectedValueFieldName").ToString();
}

お役に立てば幸いです。

于 2010-05-05T04:56:00.280 に答える