【问题标题】:DevExpress - How do I dynamically modify button caption within a datagridviewDevExpress - 如何在 datagridview 中动态修改按钮标题
【发布时间】:2021-04-30 03:47:03
【问题描述】:

请帮我解决 Devexpress 的问题。

How do I dynamically modify button caption within a datagridview?

例如:在“总销售额”列中,如果值低于 100,则按钮必须具有标题“低值”,现在如果值高于 101,则按钮必须显示“高于值”

说到这里,请帮帮我,谢谢

        private void bandedGridView1_CustomRowCellEdit(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e)
    {
        if (e.Column.Caption == "bandedGridColumn1")
        {
            int val = Convert.ToInt32(bandedGridView1.GetRowCellValue(e.RowHandle, "VAGAS"));
            RepositoryItemButtonEdit ritem = new RepositoryItemButtonEdit();
            if (val == 20)
            {
                ritem.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.HideTextEditor;
                ritem.Buttons[0].Caption = "Gerar Sorteio";
                ritem.Buttons[0].Visible = false;
                e.RepositoryItem = ritem;
            }

        }
    }

【问题讨论】:

  • 您的解决方案对我来说是正确的。 CustomRowCellEdit 事件是将就地编辑器动态分配给单个行单元格的正确位置。您面临的问题是什么?为什么要将 RepositoryItemButtonEdit 的按钮可见性设置为 false?
  • 非常感谢您的帮助。我只是想根据获得的每一行的值来改变按钮的标题,我做不到。关于隐藏的问题,那只是我正在做的一个测试。你知道如何根据每一行的值改变按钮名称吗?
  • 这里是打印窗口表单i.stack.imgur.com/vHntx.jpg

标签: c# winforms datagridview devexpress datagridviewcolumn


【解决方案1】:

要使标题可见,您需要将 RepositoryItemButtonEdit 的 Kind 属性设置为 Glyph。

【讨论】:

  • 朋友 Brendon,再次感谢,但我不知道该怎么做,我是使用 devexpress 开发 windows form C# 的新手。请你写下代码的样子好吗?
  • ritem.Buttons[0].Kind = ButtonKinds.Glyph
  • 嗨布伦登!它不起作用,ButtonKinds 显示“在当前上下文中不存在”,最糟糕的是,该事件甚至不再起作用。我很绝望,请朋友,请你看看我是怎么做到的。
  • 我目前没有安装 DevExpress WinForms,但如果您只输入“riitem.Buttons[0].Kind =”,Visual Studio intellisense 应该提供正确的枚举类型来自动完成.
  • 试试 ButtonPredefines.Glyph
【解决方案2】:

回答我的问题

  • 我创建了一个名为 ApresentaBotoesNoDataGrid() 的方法

private void ApresentaBotoesNoDataGrid() {

        RepositoryItemButtonEdit riBtnEditMatricular = new RepositoryItemButtonEdit();
        riBtnEditMatricular.Name = "riBtnEditMatricular";
        riBtnEditMatricular.Buttons[0].Kind = DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph;
        riBtnEditMatricular.Buttons[0].Caption = "Matricular";
        riBtnEditMatricular.ButtonsStyle = DevExpress.XtraEditors.Controls.BorderStyles.Office2003;
        riBtnEditMatricular.Buttons[0].Appearance.BackColor = Color.LimeGreen;
        riBtnEditMatricular.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.HideTextEditor;
        riBtnEditMatricular.ButtonClick += AcaoBotaoDataGrid_ButtonClick;

        RepositoryItemButtonEdit riBtnEditSortear = new RepositoryItemButtonEdit();
        riBtnEditSortear.Name = "riBtnEditSortear";
        riBtnEditSortear.Buttons[0].Kind = DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph;
        riBtnEditSortear.Buttons[0].Caption = "Sortear";
        riBtnEditSortear.ButtonsStyle = DevExpress.XtraEditors.Controls.BorderStyles.Office2003;
        riBtnEditSortear.Buttons[0].Appearance.BackColor = Color.FromArgb(255, 240, 208);
        riBtnEditSortear.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.HideTextEditor;
        riBtnEditSortear.ButtonClick += AcaoBotaoDataGrid_ButtonClick;
    
        dtgQuadroSorteio.RepositoryItems.Add(riBtnEditMatricular);
        dtgQuadroSorteio.RepositoryItems.Add(riBtnEditSortear);
        bandedGridView1.CustomRowCellEdit += bandedGridView1_CustomRowCellEdit;
        bandedGridView1.RowCellStyle += bandedGridView1_RowCellStyle;

    }
  • 称为 AcaoBotaoDataGrid_ButtonClick 的其他方法

void AcaoBotaoDataGrid_ButtonClick(object sender, ButtonPressedEventArgs e) { var value = bandedGridView1.GetFocusedRowCellValue("CODELETIVA");

        ButtonEdit buttonEdit = (ButtonEdit)sender;
        if (buttonEdit.Properties.Name == "riBtnEditMatricular" && e.Button.Kind == DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph)
        {
            XtraMessageBox.Show("Receive Button Clicked on row handle " + value.ToString());
        }
        else if (buttonEdit.Properties.Name == "riBtnEditSortear" && e.Button.Kind == DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph)
        {
            XtraMessageBox.Show("Pay Now Button Clicked on row handle " + value.ToString());
        }

    }
  • 事件

      private void bandedGridView1_CustomRowCellEdit(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e)
      {
          if (e.Column.FieldName != "Button") return;
          BandedGridView view = (BandedGridView)sender;
          string type = (string)view.GetRowCellValue(e.RowHandle, "TEMPERATURA");
          if (type == "Grande Procura")
              e.RepositoryItem = dtgQuadroSorteio.RepositoryItems["riBtnEditSortear"]; 
          else
              e.RepositoryItem = dtgQuadroSorteio.RepositoryItems["riBtnEditMatricular"];
      }
    

【讨论】:

    猜你喜欢
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    • 2012-09-15
    相关资源
    最近更新 更多