【问题标题】:devexpress ASPxGridView conditionally show button on rowdevexpress ASPxGridView 有条件地在行上显示按钮
【发布时间】:2016-11-17 03:56:59
【问题描述】:

在 DevExpress ASPxGridView 中,我需要根据底层记录的某些属性在网格的每一行中显示/隐藏一个按钮。 对于 DevExpress ASPxGridView,我找不到类似于 asp.net Gridview 中存在的 GridView.RowDataBound 事件的东西,这可以帮助我解决问题。

谢谢

【问题讨论】:

    标签: button devexpress show-hide aspxgridview


    【解决方案1】:

    在搜索更多之后,我发现 gridview.rowdatabound 的等效事件在 ASPxGridView 中是 HtmlRowCreated

    但根据您的要求,您可以尝试 HtmlDataCellPrepared,这对于扫描 aspxgridview 的每个单元格很有用,而且我们也可以从其他列访问数据值,这里我附上描述这些事情的示例代码。 p>

    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 列隐藏的按钮列。

    我希望这会有所帮助。

    【讨论】:

    • 非常感谢您的建议,我稍后会尝试。目前,我正在研究另一个想法:为 ASPxButton 的 Visible 属性使用一个函数,该函数必须在某些条件下隐藏。
    猜你喜欢
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多