AspxGridView复选框选中了列值

时间:2017-07-11 11:56:22

标签: asp.net devexpress aspxgridview

我使用的是aspxGridview我使用的复选框。现在我需要在检查服务器端的任何行特定列值以完成我的业务逻辑时。 以下是使用的gridview:

<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());
        }
但获得网格对象的空值。 需要帮助。

2 个答案:

答案 0 :(得分:0)

在您的示例中,您使用了DataItemTemplate,因此在这种情况下,发件人将是在该数据模板中添加的控件,即ASPxCheckBox,并且您将其转换为网格bcoz,它将变为null。

尝试下面的代码段。

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

答案 1 :(得分:0)

之前我找到了这个答案,它的工作正常如下:

&#13;
&#13;
   

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

使用此代码,我可以获得选中的复选框列值。