devexpress ASPxGridView условно показать кнопку на строке
В DevExpress ASPxGridView мне нужно показать / скрыть кнопку в каждой строке сетки, основываясь на каком-либо свойстве базовой записи. Для DevExpress ASPxGridView я не могу найти что-то похожее на событие GridView.RowDataBound, которое существует в asp.net Gridview, которое может помочь мне решить проблему.
Спасибо
1 ответ
После поиска больше я обнаружил, что эквивалентное событие для gridview.rowdatabound находится в ASPxGridView HtmlRowCreated
но в соответствии с вашим требованием вы можете попробовать HtmlDataCellPrepared, который полезен для сканирования каждой ячейки aspxgridview, а также мы можем получить доступ к значению данных из другого столбца, также здесь я прилагаю пример кода, который описывает это.
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 страница:
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.
Я надеюсь, что это может помочь.