在DevExpress ASPxGridView 中,我需要根据基础记录的某些属性在网格的每一行中显示/隐藏按钮。 对于DevExpress ASPxGridView,我找不到类似于asp.net Gridview中存在的 GridView.RowDataBound 事件的东西,这可以帮助我解决问题。
由于
答案 0 :(得分: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列隐藏的。
我希望这可能会有所帮助。