0

ASPxGridView があり、EditForm には、ユーザーがボタンをクリックしたときにポップアップ フォームがあります。現在選択されているエンティティ/行の ID を取得して、データベースにクエリを実行し、その ID に基づいてポップアップにドロップダウンを設定できるようにする必要があります。どうすればそれを手に入れることができますか?いくつかのイベントで、これを行うことができます:

protected void myGrid_OnRowUpdating(object sender, ASPxDataUpdatingEventArgs e)
        {
            Guid entityId = (Guid)e.Keys[0];

だから私はイベントでそれを試したかったSelectionChangedのですが、イベントの引数は type のみなEventArgsので、上記は使用できません..

アイデア?

4

2 に答える 2

0

以下に示すように、イベントを使用しHtmlRowCreatedてドロップダウンのコンテンツをバインドできます。

protected void myGrid_HtmlRowCreated(object sender, ASPxGridViewTableRowEventArgs e)
{
    if (e.RowType != GridViewRowType.EditForm)
        return;

    var grid = sender as ASPxGridView;
    if (grid == null) 
        return;

    var row = (sender as ASPxGridView).GetRow(e.VisibleIndex) as MyEntity;
    var ddlMyDropDown = grid.FindEditFormTemplateControl("ddlMyDropDown") as ASPxComboBox;

    ddlMyDropDown.DataSource = GetDataForMyDropdown(); // Your Business Logic
    ddlMyDropDown.DataBind();
}       
于 2012-08-07T01:12:40.473 に答える
0

私はクライアント側で何かをすることになりました。まず、次の列を追加しました。

<dx:GridViewCommandColumn ShowSelectCheckbox="True" VisibleIndex="0" Width="40">
                <HeaderTemplate>
                    <dx:ASPxCheckBox ID="SelectAllCheckBox" runat="server" ToolTip="Select/Unselect all rows on the page"
                        ClientSideEvents-CheckedChanged="function(s, e) { gridView.SelectAllRowsOnPage(s.GetChecked()); }" />
                </HeaderTemplate>
            </dx:GridViewCommandColumn>

次に、これも(同じグリッドに)追加しました:

<ClientSideEvents SelectionChanged="grid_SelectionChanged" />

最後に、javascript:

var selected = [];

        function grid_SelectionChanged(s) {
            s.GetSelectedFieldValues("ID", GetSelectedFieldValuesCallback);
        }

        function GetSelectedFieldValuesCallback(values) {
            selected = [];
            for (var i = 0; i < values.length; i++) {
                selected.push(values[i]);
            }
        }
于 2012-08-20T23:50:34.913 に答える