Click here to Skip to main content
15,892,537 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
Hi all,

i am binding gridview from the view when data is present and if no data is presnt in view i have to bind it from a table..

it works fine when data is present in view....but when view is blank Eval function throws exception.

following is the code for the GridView:-

<asp:GridView ID="grid_Demand" runat="server" Width="80%" DataKeyNames="Book_Depot_Id_N" 
                    AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" 
                    GridLines="None">
                    <RowStyle BackColor="#EFF3FB" />
                <Columns>
                <asp:TemplateField>
                <HeaderTemplate>Depot Id</HeaderTemplate>
                <HeaderStyle HorizontalAlign="Center" />
                <ItemStyle HorizontalAlign="Center" />
                <ItemTemplate>
                <%# Eval("Book_Depot_Id_N")%>
                </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                <HeaderTemplate>Depot Name</HeaderTemplate>
                <HeaderStyle HorizontalAlign="Center" />
                <ItemStyle HorizontalAlign="Center" />
                <ItemTemplate>
                <%# Eval("Book_Depot_Name_V") %>
                </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                <HeaderTemplate>Govt. Supply</HeaderTemplate>
                <HeaderStyle HorizontalAlign="Center" />
                <ItemStyle HorizontalAlign="Center" />
                <ItemTemplate>
                <asp:TextBox ID="txtGovt" runat="server" CssClass="textfield1" Text='<%# Eval("Govt_Supply_Qty_N") %>'></asp:TextBox>
                </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                <HeaderTemplate>Private Supply</HeaderTemplate>
                <HeaderStyle HorizontalAlign="Center" />
                <ItemStyle HorizontalAlign="Center" />
                <ItemTemplate>
                <asp:TextBox ID="txtPvt" runat="server" CssClass="textfield1" Text='<%# Eval("Pvt_Supply_Qty_N") %>'></asp:TextBox>
                </ItemTemplate>
                </asp:TemplateField>
                </Columns>
                    <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                    <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
                    <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
                    <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                    <EditRowStyle BackColor="#2461BF" />
                    <AlternatingRowStyle BackColor="White" />
                </asp:GridView>


and the following is the code for code-behind:-

C#
mEntity.BOOK_CLASS_ID_N = Convert.ToInt32(ddlclass.SelectedValue.ToString().Trim());
        mEntity.Book_Id_N = Convert.ToInt32(ddlbookcode.SelectedValue.ToString().Trim());
        dt = mAction.LoadWithWhereClause("PSS_GET_PRODUCTION_DEMAND_V", Constant.BOOK_CLASS_ID_N + " = " + mEntity.BOOK_CLASS_ID_N + " AND " + Constant.Book_Id_N + " = " + mEntity.Book_Id_N + " AND " + Constant.FinYear_Id_N + " = " + UtilsSession.GetCurrentFinYearId(), Constant.Book_Id_N);
        if (dt.Rows.Count > 0)
        {
            // dt = mAction.Load(Constant.PSS_BOOK_DEPOT_T);
            grid_Demand.DataSource = dt;
            grid_Demand.DataBind();
        }
        else
        {
            dt = mAction.Load(Constant.PSS_BOOK_DEPOT_T);
            grid_Demand.DataSource = dt;
            grid_Demand.DataBind();
        }
Posted

C#
dt.Rows.Add(dt.NewRow());
                grid_Demand.DataSource = dt;
                grid_Demand.DataBind();
                int colcount = grid_Demand.Rows[0].Cells.Count;
                grid_Demand.Rows[0].Cells.Clear();
                grid_Demand.Rows[0].Cells.Add(new TableCell());
                grid_Demand.Rows[0].Cells[0].ColumnSpan = colcount;
                grid_Demand.Rows[0].Cells[0].Text = "No record Present !.";




please select as answer if it helps you ..



[edit]Code block added sms-spelling corrected[/edit]
 
Share this answer
 
v2
Hey Nelek, thanks for the advice, but i have solved it myself by adding columns to tha datatable before binding it to gridview:


C#
dt.columns.add("column_name", typeof(string));
 
Share this answer
 
v2

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