Флажок AspxGridView проверил значение столбца

Я использую один aspxGridview, где я использовал флажок. Теперь мне нужно, когда я проверяю какое-либо конкретное значение столбца строки, которое я должен получить на стороне сервера, чтобы завершить свою бизнес-логику. Ниже используется вид сетки:

<dx:ASPxGridView KeyFieldName="PracticeID" ID="ASPxGrd" runat="server" ClientInstanceName="grid"
                            ClientIDMode="AutoID" AutoGenerateColumns="false" Width="100%" OnSelectionChanged="ASPxGrd_SelectionChanged">
                            <Columns>
                                <dx:GridViewDataColumn VisibleIndex="0" Name="CheckBoxColumn">
                                    <DataItemTemplate>
                                        <dx:ASPxCheckBox ID="ASPxCheckBox1" runat="server" OnCheckedChanged="ASPxCheckBox1_CheckedChanged" AutoPostBack="true">
                                        </dx:ASPxCheckBox>
                                    </DataItemTemplate>
                                </dx:GridViewDataColumn>
                                
                                <dx:GridViewDataColumn FieldName="PracticeName" Caption="Description" VisibleIndex="1">
                                <FooterTemplate>
                                    Total:
                                </FooterTemplate>
                                </dx:GridViewDataColumn>
                                 </dx:ASPxGridView>

Я попытался использовать oncheckedevent в флажке с auto postback true и использовал код для получения выбранной строки, как показано ниже:

 protected void ASPxCheckBox1_CheckedChanged(object sender, EventArgs e)
        {
            ASPxGridView grid = sender as ASPxGridView;
            string currentMasterKey = Convert.ToString(grid.GetMasterRowKeyValue());
        }
but getting null value of grid object. Need help.


person V.Prasad    schedule 11.07.2017    source источник


Ответы (2)


В вашем примере вы использовали DataItemTemplate, поэтому в этом случае отправителем будет элемент управления, который добавляется в этот шаблон данных, то есть ASPxCheckBox, и вы передаете его в сетку, потому что он становится нулевым.

попробуйте приведенный ниже фрагмент.

protected void ASPxCheckBox1_CheckedChanged(object sender, EventArgs e)
{
    ASPxCheckBox checkBox = sender as ASPxCheckBox;
    var grid = (checkBox.NamingContainer as DevExpress.Web.ASPxGridView.GridViewDataItemTemplateContainer).Grid;
    string currentMasterKey = Convert.ToString(grid.GetMasterRowKeyValue());
}
person Hemant D    schedule 11.07.2017
comment
Привет, Хемант. Ваше решение также работает и оправдывает мои ожидания. Голосование за ваш ответ. - person V.Prasad; 11.09.2017

Я нашел этот ответ раньше, и он работает нормально, как показано ниже:

   

 for (int i = 0; i < ASPxGrd.VisibleRowCount; i++)
            {
                ASPxCheckBox chk = ASPxGrd.FindRowCellTemplateControl(i, null, "ASPxCheckBox1") as ASPxCheckBox;
                if (chk.Checked)
                {
                    if (i == 0)
                    {
                        practiceName = ASPxGrd.GetRowValues(i, "PracticeName").ToString();
                    }
                 }
                 }

используя этот код, я могу получить выбранное значение столбца флажка.

person V.Prasad    schedule 12.07.2017