GridView DevExpress检查是否有任何单元格为空

时间:2013-01-28 10:10:38

标签: c# devexpress

enter image description here

我需要检查一个单元格是否为空并存储一条消息,然后在包含所有消息的每一行中创建一个新单元格

但我不知道如何使用DevExpress可以帮助我的代码

    string Name = "First Name";
    string FName = "Father Name";
    string LName = "Last Name";
    string EmpCode = "Employee Code";
    string Tax = "Tax#";
    string SocSec = "Soc.Sec#";
    string EmpType = "Employment Type";
    string DepCode = "Department Code";
    string DepDesc = "Department Description";
    private void simpleButton1_Click(object sender, System.EventArgs e)
    {
        try
        {
            OleDbConnection con = new OleDbConnection();
            con.ConnectionString = "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=C:\\Users\\pc\\Documents\\Emp.xlsx;Extended Properties=\"Excel 12.0;HDR=Yes\"";

            con.Open();
            DataTable dtSchema;
            dtSchema = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
            OleDbCommand Command = new OleDbCommand ("select * FROM [" + dtSchema.Rows[0]["TABLE_NAME"].ToString() + "]", con);
            OleDbDataAdapter da = new OleDbDataAdapter(Command);
            DataSet ds = new DataSet ();
            da.Fill(ds);
            dataGrid1.DataSource = ds.Tables[0];
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

这个循环没有给我关于空单元格的正确信息我认为这不正确我写的可能还有另一种更好的方法......

        for (int rows = 0 ; rows < gridView3.RowCount ; rows ++)
        {
            string[] msg = new string[50];

            if ((gridView3.GetRowCellValue(rows, gridView3.Columns["LName"])) == null)
            {
                msg[rows] = "name missing";
            }
        }

4 个答案:

答案 0 :(得分:1)

我有同样的问题,下面的代码对我来说很好,只是稍微改变了OP尝试的。我希望它会对某人有所帮助。

for (int rows = 0 ; rows < gridView3.RowCount ; rows ++)
    {
        string[] msg = new string[50];

        if ((gridView3.GetRowCellValue(rows, "LName")) == null)
        {
            msg[rows] = "name missing";
        }
    }

LName需要替换为字符串fieldName。

答案 1 :(得分:0)

据我所知,小区的价值不会为空。但是,基础数据源将具有空值。

检查单元格的数据是否为空或从空值求和:

private bool IsNullValue(PivotDrillDownDataSource ds, PivotGridField field)
{
    if (ds.RowCount == 0 || field == null) return false;
    for (int i = 0; i < ds.RowCount; i++)
    {
        if (Equals(ds[i][field], null))
        return true;
    }
    return false;
 } 

更改空单元格中的文字:

if (IsNullValue(e.CreateDrillDownDataSource(), e.DataField))
     e.DisplayText = "NULL OR SUM WITH NULL";

答案 2 :(得分:0)

private void gridViewPro_RowStyle(object sender, 
    DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)
{
    GridView View = sender as GridView;
    if (e.RowHandle >= 0)
    {
        double Sale = Convert.ToDouble(
            View.GetRowCellDisplayText(e.RowHandle, View.Columns["PRO_S3M"]));
        double Qua = Convert.ToDouble(
            View.GetRowCellDisplayText(e.RowHandle, View.Columns["PRO_QTY"]));
        if (Sale > 0 && Qua > 0)
        {
            if (Sale >= Qua)
            {
                e.Appearance.BackColor = Color.OrangeRed;
            }
        }
    }
}

答案 3 :(得分:-1)

使用AspxGridView的此事件

 protected void grid_HtmlDataCellPrepared(object sender, ASPxGridViewTableDataCellEventArgs e)
{        // Get Cell Values here and compare as per your conditions
    string text = e.CellValue.ToString();                   
 }