1
votes

In a DevExpress ASPxGridView I need to show / hide a button in every row of the grid, based on some property of the underlying record. For DevExpress ASPxGridView I can't find something similar to the GridView.RowDataBound Event which exists in asp.net Gridview, which can help me to solve the problem.

Thanks

1

1 Answers

1
votes

after searching more i found that equivalent event for gridview.rowdatabound is in ASPxGridView is HtmlRowCreated

but asper you requirement you may try HtmlDataCellPrepared which is usefull to scan each cell of aspxgridview and also we may access data value from other column also here i attach sample code which describe this things.

ASPX Page

          <dx:ASPxGridView ID="ASPxGridView1" OnHtmlDataCellPrepared="ASPxGridView1_HtmlDataCellPrepared" runat="server" AutoGenerateColumns="False">
                <Columns>
                    <dx:GridViewDataTextColumn FieldName="ID">
                        <DataItemTemplate>
                            <dx:ASPxButton ID="btn" runat="server" Text="click me">
                            </dx:ASPxButton>
                        </DataItemTemplate>
                    </dx:GridViewDataTextColumn>
                    <dx:GridViewDataTextColumn FieldName="ItemName">
                    </dx:GridViewDataTextColumn>
                    <dx:GridViewDataTextColumn FieldName="ItemValue">
                    </dx:GridViewDataTextColumn>

                </Columns>
            </dx:ASPxGridView>

CS page :

    protected void Page_Load(object sender, EventArgs e)
    {
        ASPxGridView1.DataSource = GetData();
        ASPxGridView1.DataBind();
    }

    public DataTable GetData()
    {
        DataTable Table = new DataTable();
        Table.Columns.Add("ID", typeof(int));
        Table.Columns.Add("ItemName", typeof(string));
        Table.Columns.Add("ItemValue", typeof(string));
        Table.Rows.Add(1, "A", "AA");
        Table.Rows.Add(2, "B", "BB");
        Table.Rows.Add(2, "B", "BB");
        Table.Rows.Add(2, "A", "BB");
        return Table;
    }

    protected void ASPxGridView1_HtmlDataCellPrepared(object sender, ASPxGridViewTableDataCellEventArgs e)
    {
        if (e.DataColumn.FieldName == "ID")
        {
            ASPxButton textBox = ASPxGridView1.FindRowCellTemplateControl(e.VisibleIndex, e.DataColumn, "btn") as ASPxButton;
            if (Convert.ToString(e.GetValue("ItemName")).Equals("B"))
            {
                textBox.Text = Convert.ToString(e.CellValue);
                textBox.Visible = true;
            }
            else
            {
                textBox.Visible = false;
            }
        }
    }

in above code i have one button column which is hide based on ItemName column.

i hope this may help.