当没有数据存在时,将gridview列绑定到布尔字段的问题

问题描述:

大家好,





我没有数据时填充gridview,但在名为active的字段中,是一种数据类型,显示错误

hello all,


I am filling my gridview when no data is present, but in a field named "active", is a bit datatype , showing error "

Object cannot be cast from DBNull to other types





代码。 aspx: -



"

code for .aspx:-

<asp:GridView CssClass="maingrid" runat="server" ID="Grid1"

        AutoGenerateColumns="False" ShowFooter="true" DataKeyNames="id"

        onrowdeleting="Grid1_RowDeleting" onrowcommand="Grid1_RowCommand" >
    <HeaderStyle CssClass="headergrid"/>
    <FooterStyle CssClass="footergrid" />

    <Columns>
    <asp:TemplateField HeaderText="S.No.">
    <ItemTemplate>

    </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Edit/Remove">
    <ItemTemplate>
    <asp:LinkButton runat="server" ID="btnDelete" CommandName="Delete" Text="Delete"></asp:LinkButton>
    </ItemTemplate>
    <FooterTemplate>
    Insert new kit
    </FooterTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Product Code">
    <ItemTemplate>
    <asp:Label runat="server" ID="lblProductCode" Text='<%#Eval("product_code") %>'></asp:Label>
    </ItemTemplate>
    <FooterTemplate>
    <asp:Button runat="server" ID="btnInsert" Text="Insert" CommandName="Insert" />
    </FooterTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Name">
    <ItemTemplate>
    <asp:Label runat="server" ID="lblName" Text='<%#Eval("name") %>'></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBox runat="server" ID="txtName1" Text='<%#Eval("name") %>'></asp:TextBox>
    </EditItemTemplate>
    <FooterTemplate>
    <asp:TextBox runat="server" ID="txtName"></asp:TextBox>
    </FooterTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="MRP">
    <ItemTemplate>
    <asp:Label runat="server" ID="lblMRP" Text='<%#Eval("mrp") %>'></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBox runat="server" ID="txtMRP1" Text='<%#Eval("mrp") %>'></asp:TextBox>
    </EditItemTemplate>
    <FooterTemplate>
    <asp:TextBox runat="server" ID="txtMRP"></asp:TextBox>
    </FooterTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Status">
    <ItemTemplate>
      <%#Convert.ToBoolean(DataBinder.Eval(Container, "DataItem.active")) ? "<img src='../images/active.gif'>" : "<img src='../images/deactive.gif'>"%>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:CheckBox runat="server" ID="chkStatus" Text="Active" />
    </EditItemTemplate>
    <FooterTemplate>
    <asp:CheckBox runat="server" ID="chkStatus" />
    </FooterTemplate>
    </asp:TemplateField>
    </Columns>
    </asp:GridView>








$。b $ b。代码为.cs页面: -







code for .cs page:-

private void ShowNoResultFound(DataTable source, GridView gv)
  {
      source.Rows.Add(source.NewRow());
      gv.DataSource = source;
      gv.DataBind();
      int columnsCount = gv.Columns.Count;
      gv.Rows[0].Cells.Clear();
      gv.Rows[0].Cells.Add(new TableCell());
      gv.Rows[0].Cells[0].ColumnSpan = columnsCount;
      gv.Rows[0].Cells[0].HorizontalAlign = HorizontalAlign.Center;
      gv.Rows[0].Cells[0].ForeColor = System.Drawing.Color.Red;
      gv.Rows[0].Cells[0].Text = "NO RESULT FOUND!";
  }





错误发生在gv.DataBind()事件..



error occur at gv.DataBind() event..

当你检索数据库然后你可以使用



when you retrive database then you can use

IsNull(active,0) as active





在你的sql中声明







如果这是您的解决方案,请标记为解决方案



in your sql statement



if this is your solution , please mark as solution

>

我使用了emptydatatemplate,其中我在emptydatatemplate中创建了一个表...
i have used emptydatatemplate in which i have created a table inside emptydatatemplate...


http://www.codeproject.com/Tips/424661/Access-Controls-from-ASP-NET-GridView-EmptyDataTem

这将解决您的问题。



为我工作请试试这个
http://www.codeproject.com/Tips/424661/Access-Controls-from-ASP-NET-GridView-EmptyDataTem
This will solve your problem.

its working for me please try this