Introduction

Going through the newsgroups I have come across a few queries given below.

Solution

Let's design the User Interface. Just a simple drag and drop the DataGrid.

<asp:DataGrid 
    id="DataGrid1" 
    OnItemDataBound="ItemDB" 
    runat="server" 
    BorderColor="#CCCCCC" 
    BorderStyle="None" 
    BorderWidth="1px" 
    BackColor="White" 
    CellPadding="3" 
    Font-Names="Verdana" 
    Font-Size="X-Small">

    <SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#669999"></SelectedItemStyle>
    <ItemStyle ForeColor="#000066"></ItemStyle>
    <HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#006699"></HeaderStyle>
    <FooterStyle ForeColor="#000066" BackColor="White"></FooterStyle>
</asp:DataGrid>

In the Page_Load

SqlConnection mycn;
SqlDataAdapter myda;
DataSet ds;
String strConn;
private void Page_Load(object sender, System.EventArgs e)
{
    // Put user code to initialize the page here
    strConn = "Data Source=localhost;uid=sa;pwd=;Initial Catalog=northwind";
    mycn = new SqlConnection(strConn);
    myda = new SqlDataAdapter("Select * FROM Orders where orderid<=10250", mycn);
    ds = new DataSet();
    myda.Fill(ds, "Table");
    DataView dv = new DataView(ds.Tables[0]);
    if (!Page.IsPostBack)
    {
        DataGrid1.DataSource = dv;
        DataGrid1.DataBind();
    }
}

The solution for the above queries is done in ItemDataBound.

protected void ItemDB(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
    DataView dv = (DataView)DataGrid1.DataSource;
    DataRowView drv = (DataRowView)e.Item.DataItem;
    // Check if the Data Exists
    if (dv.Table.Rows.Count == 0)
    {
        // By default, the DataGrid Header is shown in case there is no Data Available
        // So in case of No Data found
        // Check the ListItemType.Header
        if ((e.Item.ItemType == ListItemType.Header))
        {
            int i = e.Item.Cells.Count;

            // Assign "No Search result Found in one of the cells of DataGrid"
            e.Item.Cells[0].Text = "No Search Results Found";

            // Remove Rest of the empty cells from Datagrid
            for (int j = i - 1; j > 0; j--)
            {
                e.Item.Cells.RemoveAt(j);
            }
        }
    }
    else
    {
        // If the Data Exists
        // Navigate through each cell
        for (int x = 0; x < e.Item.Cells.Count - 1; x++)
        {
            // Check for the ListItemType.Item or ListItemType.AlternatingItem
            if ((e.Item.ItemType == ListItemType.Item) ||
                (e.Item.ItemType == ListItemType.AlternatingItem))
            {
                // To check if Column Data = null
                if (drv[x].ToString().Trim() == System.DBNull.Value.ToString())
                {
                    // For null values, Datagrid shows
                    // Here we will display ""
                    e.Item.Cells[x].Text = "";
                }
            }
        }
    }
}

Note. The desired output i.e. view Source having " and not " "'s would work provided the Sql Statement is "Select * from <tableName>".