当没有数据存在时,将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