Devexpress 如何在主详图网格视图中获取选定的详图网格行?

Devexpress 如何在主详图网格视图中获取选定的详图网格行?,devexpress,master-detail,aspxgridview,selectedvalue,Devexpress,Master Detail,Aspxgridview,Selectedvalue,我在获取详图网格的选定行值时遇到问题。我有一个弹出控件中的主细节网格,它工作得很好。我还启用了启用选择复选框,但当我尝试在按钮的ClientSideEvents上运行GetSelectedFieldValues时,它总是返回“0”。我做错了什么,我找不到它 以下是详细信息网格: CssFilePath=“~/App\u Themes/Aqua/{0}/styles.css” ClientInstanceName=“gvC\U参数tempd”> VisibleIndex=“3”> Visibl

我在获取详图网格的选定行值时遇到问题。我有一个弹出控件中的主细节网格,它工作得很好。我还启用了启用选择复选框,但当我尝试在按钮的ClientSideEvents上运行GetSelectedFieldValues时,它总是返回“0”。我做错了什么,我找不到它

以下是详细信息网格:

CssFilePath=“~/App\u Themes/Aqua/{0}/styles.css”

ClientInstanceName=“gvC\U参数tempd”>

VisibleIndex=“3”>

VisibleIndex=“4”>

VisibleIndex=“5”>

VisibleIndex=“6”>


这是按钮:


这是jsscript:

函数ShowCellValue(值){

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

        }
    }
        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);
    }
var value=condition.GetText();
警报(values.length);//在这里它返回“0”
如果(值!=“”)
{
var newValue=''+value+values+'='';
condition.SetText(newValue);
}
其他的
{
对于(变量i=0;i
我不知道我做错了什么


感谢您的帮助

我认为按钮位于同一个DetailRowTemplate容器中的假设正确吗?无论如何,必须访问detail GridView对象的适当实例。为此,请将网格的ClientInstanceName属性设置为动态值。这应该允许您访问适当的网格实例并获取选定的行值。示例代码位于:


我认为按钮位于同一个DetailRowTemplate容器中,对吗?无论如何,必须访问detail GridView对象的适当实例。为此,请将网格的ClientInstanceName属性设置为动态值。这应该允许您访问适当的网格实例并获取选定的行值。示例代码位于:


我正在运行时设置数据源,但我不调用DataBind方法,因为它使细节网格的BeforePerformDataSelect执行多个操作

此代码设置主网格数据源并将其绑定:

保护空隙 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();

        }
    }
        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);
    }
此代码用于设置详图网格的数据源:

保护空隙 gv_参数tempd_在执行数据选择之前(对象 发送方,事件参数(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();

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

我在运行时设置数据源,但我不调用DataBind方法,因为它使细节网格的BeforePerformDataSelect执行多个操作

此代码设置主网格数据源并将其绑定:

保护空隙 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();

        }
    }
        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);
    }
此代码用于设置详图网格的数据源:

保护空隙 gv_参数tempd_在执行数据选择之前(对象 发送方,事件参数(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();

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

我看到您在CustomCallback事件处理程序中设置了主网格的数据源。请尝试在会话变量中缓存masterKey值,并不仅在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();
    }

这有帮助吗?

我看到您在CustomCallback事件处理程序中设置了主网格的数据源。请尝试在会话变量中缓存masterKey值,并不仅在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();
    }

这有帮助吗?

我根据您的描述创建了一个示例项目,效果很好。可以从以下网站下载:


我根据您的描述创建了一个示例项目,效果很好。可从以下网站下载:


按钮不在DetailRowTemplate中,它在网格之外。如果是这样,可能会有许多详细网格。您如何决定应该获取哪些网格值?只有一个详细网格,而按钮在所有网格之外,它在html表中。Spesific ClientInstanceName不够?嗯,我想我不太理解您。A您是单独使用两个网格?还是有详细网格,位于主网格的DetailRowTemplate容器中,如DevXPress演示中所示?如果是后一种情况,此时详细网格的数量等于可见扩展主网格的数量。这就是为什么我建议您使用动态客户端安装的方法不,我不单独使用它们,细节网格在DetailRowTemplate中,但我想知道的是,按钮在DetailRowTemplate中是否重要?因为如果它在DetailRowTemplate“Container.VisibleIndex”的外部不起作用。在我的例子中,也只有一个主网格和详细网格。按钮不在DetailRowTemplate中,它在网格之外。如果是这样,可以有许多详细网格。如何确定应该获取哪些网格值?只有一个详细网格,而按钮在所有网格之外,它在html表中。Spesific ClientInstanceName还不够?嗯,我想我不太了解你。你是单独使用两个网格?还是有一个详细网格,驻留在主网格的DetailRowTemplate容器中,如DevExpress演示所示?如果是后一种情况,此时详细网格的数量等于可见的扩展主网格的数量。这就是为什么我建议您使用带有动态ClientInstanceName的方法。不,我不单独使用它们,细节网格在DetailRowTemplate中,但我想知道的是,按钮在DetailRowTemplate中是否重要?因为如果它在DetailRowTemplate“Container.VisibleIndex”之外,则不起作用。同样在我的c中
                                    FieldName="PrmStokSelector"
                                </dxwgv:GridViewDataTextColumn>

                            </Columns>
                <ClientSideEvents Click="function(s,e)

                {

                    pcc_Question.Hide();

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

                }"

                />

            </dxe:ASPxButton>
    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);

    }



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

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