仅列出datagridview中的可见行

时间:2015-10-08 14:06:14

标签: c# datagridview charts

我正在尝试仅绘制datagridview中的可见行。原因是因为datagridviewer已按日期排序,我只想要这些值。另一行值并编码为.Visible = false。下面是显示图表并绘制X和Y值的代码。我试过使用RowsVisible方法,但却什么都没有。

if (CK_QA_DataDataGridView.Rows.Count == 0)
{
    MessageBox.Show("Select Date Range and Show Results Before Chart");
}
else
{
       chart5.Visible = true;
       InitialChart.Visible = false;

       chart5.DataSource = CK_QA_DataDataGridView.DataSource;

       this.chart5.Series["X error"].XValueMember = CK_QA_DataDataGridView.Columns[0].DataPropertyName;

       this.chart5.Series["Y error"].YValueMembers = CK_QA_DataDataGridView.Columns[13].DataPropertyName;

       chart5.DataBind();
}

1 个答案:

答案 0 :(得分:0)

可能有很多方法可以做到这一点,但我怀疑你可以直接查看DGV行的可见性{。{1}}。

因此,最佳解决方案取决于如何确定可见性。

如果通过评估某些数据,您可以使用DataSource基于具有 DataView 的相同DataTable来取得成功。

但是,如果用户可以随意使DGV行不可见,则必须为Filter创建单独的DataSource

这是一个完整但极简的例子..

我先创建一个表来填充DGV:

Chart

然后我编码DataTable DT2 = null; private void button16_Click(object sender, EventArgs e) { DT2 = new DataTable("Artists"); DT2.Columns.Add("Name", typeof(string)); DT2.Columns.Add("Age", typeof(int)); DT2.Columns.Add("Score", typeof(int)); DT2.Rows.Add("Animals", 33, 17); DT2.Rows.Add("Band", 45, 9); DT2.Rows.Add("Cream", 43, 26); DT2.Rows.Add("Doors", 50, 21); dataGridView1.DataSource = DT2; } 来模拟可见性的条件:

NumericUpDown

最后,我根据原始private void numericUpDown1_ValueChanged(object sender, EventArgs e) { int limit = (int)numericUpDown1.Value; foreach (DataGridViewRow row in dataGridView1.Rows) { var dbo = (DataRowView)row.DataBoundItem; row.Visible = (int)dbo[2] >= limit; //check for current row missing! } } 中的行和每个DGV行的DataSource属性创建DataTable

Visible

注意您无法隐藏当前行。为安全起见,您可能需要使用this解决方法..