【问题标题】:AspxGridView checkbox checked column valueAspxGridView 复选框选中的列值
【发布时间】:2017-07-11 11:56:22
【问题描述】:

我正在使用一个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>

我尝试在auto postback true 的复选框中使用oncheckedevent,并使用代码来获取选定的行,如下所示:

 protected void ASPxCheckBox1_CheckedChanged(object sender, EventArgs e)
        {
            ASPxGridView grid = sender as ASPxGridView;
            string currentMasterKey = Convert.ToString(grid.GetMasterRowKeyValue());
        }
但获取网格对象的空值。 需要帮忙。

【问题讨论】:

    标签: asp.net devexpress aspxgridview


    【解决方案1】:

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

    试试下面的 sn-p。

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

    【讨论】:

    • 您好 Hemant,您的解决方案也正在发挥作用并满足我的期望。支持你的答案。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-18
      • 2019-08-28
      • 1970-01-01
      • 2011-02-05
      • 2017-03-09
      • 1970-01-01
      相关资源
      最近更新 更多