Click here to Skip to main content
15,894,646 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I have facing problem when gridview is empty then show only footer part.


C#
private void FillCustomerInGrid()
    {
        gvGroupList.DataSource = AdminService.SelectGroupUsergrid();
        gvGroupList.DataBind();
        int rowCount = gvGroupList.Rows.Count;
        if (rowCount == 0)
        {
            DataTable dt = new DataTable();
           dt.Columns.Add("Id");
            dt.Columns.Add("Group_Name");
            dt.Columns.Add("emp_name");
            dt.Columns.Add("emp_Id");
            dt.Columns.Add("Email_Requriment");
            DataRow dr = dt.NewRow();
            dt.Rows.Add(dr);
            gvGroupList.DataSource = dt;
            gvGroupList.DataBind();
            gvGroupList.Rows[0].Visible = false;

        }
    }


But the problem is happening when in

HTML
<itemtemplate>
    <asp:CheckBox ID="chkEmailReq" runat="server" Checked='<%#Eval("Email_Requriment") %>'
    Enabled="false" />
</itemtemplate>

Then it gives error --
System.InvalidCastException: Specified cast is not valid 

please help me
Posted
Updated 19-Apr-12 23:04pm
v2

You can use TemplatField and try this:

HTML
<input type="checkbox" id="Checkbox1" <%# Convert.ToBoolean(Eval("Email_Requriment"))==true?"checked" : "" %> />
 
Share this answer
 
Hi,

Try this:

C#
private void FillCustomerInGrid()
    {
        gvGroupList.DataSource = AdminService.SelectGroupUsergrid();
        gvGroupList.DataBind();
        int rowCount = gvGroupList.Rows.Count;
        if (rowCount == 0)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Id");
            dt.Columns.Add("Group_Name");
            dt.Columns.Add("emp_name");
            dt.Columns.Add("emp_Id");
            dt.Columns.Add("Email_Requriment");
            dt.Rows.Add("", "", "", false);
            gvGroupList.DataSource = dt;
            gvGroupList.DataBind();
            gvGroupList.Rows[0].Visible = false;
 
        }
    }


I hope this will work for you..
 
Share this answer
 
You are trying to cast a NULL to a boolean.
Your code :
C#
DataRow dr = dt.NewRow();
            dt.Rows.Add(dr);

this means dr["Email_Requriment"] is DBNull.Value so set
C#
dr["Email_Requriment"] = false;
before you do:
C#
dt.Rows.Add(dr);


and like Praveen says:
C#
dt.Columns.Add("Email_Requriment", typeof(bool));
 
Share this answer
 
v2
Add data types to the columns, by default it is string as


C#
private void FillCustomerInGrid()
        {
            gvGroupList.DataSource = AdminService.SelectGroupUsergrid();
            gvGroupList.DataBind();
            int rowCount = gvGroupList.Rows.Count;
            if (rowCount == 0)
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("Id");
                dt.Columns.Add("Group_Name");
                dt.Columns.Add("emp_name");
                dt.Columns.Add("emp_Id");
                dt.Columns.Add("Email_Requriment", typeof(bool));
                DataRow dr = dt.NewRow();
                dt.Rows.Add(dr);
                gvGroupList.DataSource = dt;
                gvGroupList.DataBind();
                gvGroupList.Rows[0].Visible = false;
            }
        }

Regards
Praveen
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900