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ı(Grup)"

                                    FieldName="PrmDetailNameG"

可见索引="3">

                                </dxwgv:GridViewDataTextColumn>

                                <dxwgv:GridViewDataTextColumn

Caption="Seçim Adı(斯托克)"

                                    FieldName="PrmDetailNameS"

可见索引="4">

                                </dxwgv:GridViewDataTextColumn>

                                <dxwgv:GridViewDataTextColumn

Caption="Grup Seçimi Yapan"

                                    FieldName="PrmGroupSelector"

可见索引="5">

                                </dxwgv:GridViewDataTextColumn>

                                <dxwgv:GridViewDataTextColumn

Caption="Stok Seçimi Yapan"

                                    FieldName="PrmStokSelector"

可见索引="6">

                                </dxwgv:GridViewDataTextColumn>

                            </Columns>

这是按钮:

                <ClientSideEvents Click="function(s,e)

                {

                    pcc_Question.Hide();

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

                }"

                />

            </dxe:ASPxButton>

这是jsscript:

函数显示单元值(值){

    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

我是否正确地假设按钮位于同一个 DetailRowTemplate 容器中?无论如何,有必要访问详细 GridView 对象的正确实例。为此,请将网格的 ClientInstanceName 属性设置为动态值。这应该允许您访问正确的网格实例并获取选定的行值。示例代码可在以下位置获得:

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

于 2010-07-07T13:36:15.250 回答
0

我在运行时设置 DataSource 但我不调用 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();

        }
    }

此代码用于设置详细网格的数据源:

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);
    }
于 2010-07-08T11:15:08.883 回答
0

我看到您在 CustomCallback 事件处理程序中设置了主网格的 DataSource。尝试将 masterKey 值缓存在 Session 变量中,并不仅在 CustomCallback 事件处理程序中而且在 Page_Init 方法中设置网格的 DataSource:

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

我根据您的描述创建了一个示例项目,它工作正常。可从以下位置下载:

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

于 2010-07-20T08:18:40.973 回答