我正在尝试仅绘制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();
}
答案 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解决方法..