在数据源为空时展示自定义文本的组件

在ASP.NET的GridView控件中,当绑定的数据源不包含任何记录时,会显示一个空数据行。为了在Windows Forms应用程序中实现类似的功能,创建了一个组件,它允许在数据源为空时展示自定义文本。

在ASP.NET中,可以通过设置EmptyDataText属性来指定在空数据行中显示的文本。然而,Windows Forms应用程序并没有这个属性,因此创建了一个组件来实现这一功能。

使用代码

下面的屏幕截图展示了EmptyDataText Grid组件的属性。

绑定了0条记录的网格:

绑定后的网格看起来像这样:

以下代码是自解释的。以下代码已写在Component\DataGrid.cs中。在DataGrid.cs中,覆盖了DataGridView的Paint方法。

以下代码已写在Form1.cs中:

代码示例

public class CustomDataGridView : DataGridView { public string EmptyDataText { get; set; } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); if (DataSource != null && DataSource.Count == 0) { e.Graphics.DrawString(EmptyDataText, this.Font, Brushes.Black, new PointF(0, 0)); } } }

在Form1.cs中:

private void Form1_Load(object sender, EventArgs e) { dataGridView1.DataSource = GetDataSource(); dataGridView1.EmptyDataText = "没有找到记录"; } private DataTable GetDataSource() { // 模拟从数据库获取数据 DataTable dt = new DataTable(); // dt.Columns.Add("Column1", typeof(string)); // dt.Rows.Add("Row1"); return dt; }

要点

现在,将尝试支持自动标签显示,而不是检查以下代码行:

if (dt != null && dt.Rows.Count > 0) { // Remove text when records exist dataGridView1.EmptyDataText = ""; } else { // Assign text when no record found dataGridView1.EmptyDataText = txtEmptyText.Text; }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485