2 Stimmen

Wie erhält man die ausgewählte Zeile des Detailrasters im Master-Detail-GridView?

Ich habe ein Problem beim Abrufen der Werte der ausgewählten Zeilen in einem Detailgitter. Ich habe Master-Detail-Raster in einem Popup-Steuerelement und es funktioniert gut. Ich habe auch die Auswahl aktivieren, um Kontrollkästchen zu haben, aber wenn ich versuche, GetSelectedFieldValues auf ClientSideEvents einer Schaltfläche ausführen gibt es immer "0". Was mache ich falsch, ich konnte es nicht finden?

Hier ist das Detailraster:

                            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

Bildunterschrift="Detay Kodu" Feldname="PrmDetailCode"

                                    VisibleIndex="0">

                                </dxwgv:GridViewDataTextColumn>

                                <dxwgv:GridViewDataTextColumn

Caption="Seçim Ad" FeldName="PrmDetailName"

                                    VisibleIndex="2">

                                </dxwgv:GridViewDataTextColumn>

                                <dxwgv:GridViewDataTextColumn

Caption="Seçim Ad(Grup)"

                                    FieldName="PrmDetailNameG"

VisibleIndex="3">

                                </dxwgv:GridViewDataTextColumn>

                                <dxwgv:GridViewDataTextColumn

Caption="Seçim Ad(Stok)"

                                    FieldName="PrmDetailNameS"

VisibleIndex="4">

                                </dxwgv:GridViewDataTextColumn>

                                <dxwgv:GridViewDataTextColumn

Caption="Gruppenauswahl"

                                    FieldName="PrmGroupSelector"

VisibleIndex="5">

                                </dxwgv:GridViewDataTextColumn>

                                <dxwgv:GridViewDataTextColumn

Caption="Stock Selector"

                                    FieldName="PrmStokSelector"

VisibleIndex="6">

                                </dxwgv:GridViewDataTextColumn>

                            </Columns>

Und das ist die Taste:

                <ClientSideEvents Click="function(s,e)

                {

                    pcc_Question.Hide();

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

                }"

                />

            </dxe:ASPxButton>

und dies ist das Jsscript:

function ShowCellValue(values) {

    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);

    }

}

Ich weiß nicht, was ich falsch mache,

Danke für die Hilfe

0voto

DevExpress Team Punkte 11250

Liege ich richtig in meiner Annahme, dass die Schaltfläche in der gleichen DetailRowTemplate Container befindet? Wie auch immer, es ist notwendig, auf die richtige Instanz des Detail GridView Objekts zuzugreifen. Um dies zu tun, setzen Sie die Eigenschaft ClientInstanceName des Grids auf einen dynamischen Wert. Dies sollte es Ihnen ermöglichen, auf die richtige Grid-Instanz zuzugreifen und ausgewählte Zeilenwerte abzurufen. Ein Beispielcode ist verfügbar unter:

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

0voto

mehmetserif Punkte 1115

Ich lege die DataSource zur Laufzeit fest, aber ich rufe die DataBind-Methode nicht auf, weil sie BeforePerformDataSelect des Detail-Gitters dazu veranlasst, mehr als eine Auswahl durchzuführen.

Mit diesem Code wird die Datenquelle des Master-Grids festgelegt und gebunden:

protected void gv_Answers_CustomCallback(object Absender, 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();

        }
    }

Dieser Code dient zum Festlegen der Datenquelle für das Detailgitter:

protected void gv_ParameterTempD_BeforePerformDataSelect(object sender, 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);
    }

0voto

DevExpress Team Punkte 11250

Ich sehe, dass Sie die DataSource des Master-Rasters im CustomCallback-Ereignishandler festlegen. Versuchen Sie, den Wert masterKey in einer Sitzungsvariablen zwischenzuspeichern und die DataSource des Rasters nicht nur im CustomCallback-Ereignishandler, sondern auch in der Methode Page_Init festzulegen:

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();
    }

Ist das hilfreich?

0voto

DevExpress Team Punkte 11250

Ich habe ein Beispielprojekt auf der Grundlage Ihrer Beschreibung erstellt und es funktioniert einwandfrei. Es ist zum Herunterladen verfügbar unter:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X