Devexpress ASPxGridView условно показывает кнопку в строке

В DevExpress ASPxGridView мне нужно показать/скрыть кнопку в каждой строке сетки на основе некоторого свойства базовой записи. Для DevExpress ASPxGridView я не могу найти что-то похожее на событие GridView.RowDataBound, существующее в asp.net Gridview, которое может помочь мне решить проблему.

Спасибо


person Antonache Radu    schedule 14.07.2016    source источник


Ответы (1)


после поиска я обнаружил, что эквивалентное событие для gridview.rowdatabound в ASPxGridView равно HtmlRowCreated.

но в соответствии с вашими требованиями вы можете попробовать HtmlDataCellPrepared, который полезен для сканирования каждой ячейки aspxgridview, а также мы можем получить доступ к значению данных из другого столбца, также здесь я прикрепляю пример кода, который описывает это.

Страница ASPX

          <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:

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

в приведенном выше коде у меня есть один столбец кнопок, который скрыт на основе столбца ItemName.

я надеюсь, что это может помочь.

person Sanjay Radadiya    schedule 14.07.2016
comment
Большое спасибо за ваше предложение, я попробую позже. На данный момент я работаю над другой идеей: использовать функцию для атрибута Visible ASPxButton, который должен быть скрыт при некоторых условиях. - person Antonache Radu; 14.07.2016