2

詳細グリッドの選択された行の値を取得する際に問題があります。ポップアップ コントロールにマスター/ディテール グリッドがあり、正常に動作します。チェックボックスを有効にする選択も有効にしましたが、ボタンの ClientSideEvents で GetSelectedFieldValues を実行しようとすると、常に「0」が返されます。見つけられなかったのですが、どうすればいいですか?

詳細グリッドは次のとおりです。

                            AutoGenerateColumns="False"

CssFilePath="~/App_Themes/Aqua/{0}/styles.css"

                            CssPostfix="Aqua" 

                            OnBeforePerformDataSelect="gv_ParameterTempD_BeforePerformDataSelect"

ClientInstanceName="gvC_ParameterTempD">

                                <dxwgv:GridViewCommandColumn

ShowSelectCheckbox="True" VisibleIndex="0">

                                </dxwgv:GridViewCommandColumn>

                                <dxwgv:GridViewDataTextColumn

Caption="Detay Kodu" FieldName="PrmDetailCode"

                                    VisibleIndex="0">

                                </dxwgv:GridViewDataTextColumn>

                                <dxwgv:GridViewDataTextColumn

Caption="Seçim Adı" FieldName="PrmDetailName"

                                    VisibleIndex="2">

                                </dxwgv:GridViewDataTextColumn>

                                <dxwgv:GridViewDataTextColumn

Caption="Seçim Adı(グループ)"

                                    FieldName="PrmDetailNameG"

VisibleIndex="3">

                                </dxwgv:GridViewDataTextColumn>

                                <dxwgv:GridViewDataTextColumn

Caption="Seçim Adı(Stok)"

                                    FieldName="PrmDetailNameS"

VisibleIndex="4">

                                </dxwgv:GridViewDataTextColumn>

                                <dxwgv:GridViewDataTextColumn

Caption="Grup Secimi Yapan"

                                    FieldName="PrmGroupSelector"

VisibleIndex="5">

                                </dxwgv:GridViewDataTextColumn>

                                <dxwgv:GridViewDataTextColumn

Caption="ストック セミヤパン"

                                    FieldName="PrmStokSelector"

VisibleIndex="6">

                                </dxwgv:GridViewDataTextColumn>

                            </Columns>

そして、これがボタンです:

                <ClientSideEvents Click="function(s,e)

                {

                    pcc_Question.Hide();

                    gvC_ParameterTempD.GetSelectedFieldValues('PrmDetailName;PrmDetailNameG;PrmDetailNameS',ShowCellValue);

                }"

                />

            </dxe:ASPxButton>

これはjsscriptです:

関数 ShowCellValue(値) {

    var value = condition.GetText();

    alert(values.length); // here it returns "0"

    if(value != "")

    {

        var newValue = ' ' + value + values + ' = ';

        condition.SetText(newValue);

    }

    else

    {

        for(var i = 0; i < values.length; i ++) {

            value += values[i];

        }

        condition.SetText(value);

    }



}

何を間違えているのかわからない、

助けてくれてありがとう

4

4 に答える 4

0

CustomCallbackイベントハンドラーでマスターグリッドのデータソースを設定したようです。masterKey値をSession変数にキャッシュし、グリッドのDataSourceをCustomCallbackイベントハンドラーだけでなくPage_Initメソッドにも設定してみてください。

protected void Page_Init(object sender, EventArgs e) {
    if(Session["masterKey"] == null)
      return;
    ConfPrmMTempCollection _ConfPrmMTempCollection = new ConfPrmMTempCollection();

            masterKey = Session["masterKey"].ToString();

            if (masterKey != "")
            {
                man.Add(new SqlOperatorEquality("MAND_CONF_PRM_M_TEMP.PARAMETER_M_TEMP_ID", Convert.ToInt32(masterKey)));
                gv_Answers.DataSource = gc.LoadCollectionFromCollType(typeof(ConfPrmMTempCollection),man);
                man.Clear();
            }

    }


    protected void Page_Load(object sender, EventArgs e) {
                gv_Answers.DataBind();
    }

これは役に立ちますか?

于 2010-07-08T18:06:33.003 に答える
0

実行時に DataSource を設定していますが、詳細グリッドの BeforePerformDataSelect を複数実行するため、DataBind メソッドは呼び出しません。

このコードは、マスター グリッド データソースを設定してバインドします。

protected void gv_Answers_CustomCallback(オブジェクト送信者、ASPxGridViewCustomCallbackEventArgs e) {

        ConfPrmMTempCollection _ConfPrmMTempCollection = new ConfPrmMTempCollection();
        masterKey = e.Parameters;

        if (masterKey != "")
        {
            man.Add(new SqlOperatorEquality("MAND_CONF_PRM_M_TEMP.PARAMETER_M_TEMP_ID", Convert.ToInt32(masterKey)));
            gv_Answers.DataSource = gc.LoadCollectionFromCollType(typeof(ConfPrmMTempCollection),man);
            gv_Answers.DataBind();

            man.Clear();

        }
    }

そして、このコードは詳細グリッドのデータソースを設定するためのものです:

protected void gv_ParameterTempD_BeforePerformDataSelect(オブジェクト送信者, EventArgs e) {

        ASPxGridView detailGrid = sender as ASPxGridView;

        masterKey = detailGrid.GetMasterRowKeyValue().ToString();
        man.Add(new SqlOperatorEquality("MAND_CONF_PRM_D_TEMP.PARAMETER_M_TEMP_ID", Convert.ToInt32(masterKey)));

        detailGrid.DataSource = gc.LoadCollectionFromCollType(typeof(ConfPrmDTempCollection),man);
    }
于 2010-07-08T11:15:08.883 に答える
0

あなたの説明に基づいてサンプルプロジェクトを作成しましたが、正常に動作します。以下からダウンロードできます。

http://www.devexpress.com/Support/Center/ViewIssue.aspx?issueid=Q220495

于 2010-07-20T08:18:40.973 に答える
0

ボタンが同じ DetailRowTemplate コンテナーにあるという私の仮定は正しいですか? とにかく、詳細 GridView オブジェクトの適切なインスタンスにアクセスする必要があります。これを行うには、グリッドの ClientInstanceName プロパティを動的な値に設定します。これにより、適切なグリッド インスタンスにアクセスし、選択した行の値をフェッチできるようになります。サンプル コードは次の場所にあります。

http://www.devexpress.com/Support/Center/ViewIssue.aspx?issueid=Q90007

于 2010-07-07T13:36:15.250 に答える