我正在使用linq查询为gridview提供以下内容:
var query = (from p in db.Mytable Where
p.Circuit_Type.Equals(drpCircuitType.SelectedItem)
&& p.Voltage >= double.Parse(Voltage)
&& p.HP >= double.Parse(HP)
select new
{
p.Circuit_Type,
p.Device1_Part_Number,
p.Device1_Description,
p.Device2_Part_Number,
p.Device2_Description,
p.Device3_Part_Number,
p.Device4_Part_Number,
p.Device4_Description,
p.Min_Encl_Volume,
p.Conditions_of_Acceptability,
p.SCCR,
p.Voltage_CombinationSCCR,
p.U_Reference,
p.Combination_Reference
});
GridTest.DataSource = query;
GridTest.DataBind();
到目前为止这是有效的。
所以我想要的是如果那些字段是空的而不是在gridview中显示该列(自动隐藏它)
答案 0 :(得分:0)
您需要找到空单元格并隐藏列。这是一种扩展方法。
public static class Extensions
{
public static DataGridView RemoveEmptyColumns(this DataGridView grdView)
{
foreach (DataGridViewColumn clm in grdView.Columns)
{
bool isEmpty = true;
foreach (DataGridViewRow row in grdView.Rows)
{
if (! string.IsNullOrEmpty(row.Cells[clm.Index].Value.ToString()))
{
isEmpty = false;
break;
}
}
grdView.Columns[clm.Index].Visible = isEmpty;
}
return grdView;
}
}
你可以通过
来调用它GridTest.RemoveEmptyColumns();
HTH
答案 1 :(得分:0)
这取决于。对于所有行,(A)的空字段是空的,还是(B)仅对于某些行。
此外,在GridView中,您使用的是自动生成的列还是手动指定了它们?
为了使其正常工作,它必须是方案A,然后您可以使用RowCreated事件来搜索和隐藏没有数据要显示的列。
答案 2 :(得分:0)
使用网格的RowDataBound事件。抓住记录并检查,如果你不想显示那么使用
e.Row.Cells[index].Visible = false;
其中index是列索引。
答案 3 :(得分:0)
好的,假设结果数据集将返回所有项目缺失值完全相同的字段,并且所述数据集绑定到带有自动生成列的网格视图,标题行然后以下工作(至少在我的计算机上) )
protected void gvproducts_DataBound(object sender, EventArgs e)
{
GridView gv = (GridView)sender;
// iterate through the gridview's rows and hide emty cells.
for (int r = 0; r < gv.Rows.Count; r++)
{
// only interested in data rows
if (gv.Rows[r].RowType == DataControlRowType.DataRow)
{
// iterate through cells
for (int c = 0; c < gv.Rows[r].Cells.Count; c++)
{
// check text content of cell
if (string.IsNullOrEmpty(Server.HtmlDecode(gv.Rows[r].Cells[c].Text).Trim()))
{
// hide cell
gv.Rows[r].Cells[c].Visible = false;
// also hide header row's corresponding cell
gv.HeaderRow.Cells[c].Visible = false;
}
}
}
}
}
如果上述假设不成立,那么您将看到一个非常奇怪的DataGrid。
你知道他们对假设的看法......