系统为vs2005,数据库sqlserver2000,在数据库中有一盖章字段,类型为bit,我的前台代码为:
<asp:TemplateField HeaderText="盖章">
<ItemTemplate><%# DataBinder.Eval(Container.DataItem, "Gz")%></ItemTemplate>
<ItemStyle Width="1%" BorderWidth="1px" />
<HeaderStyle HorizontalAlign="Center" />
</asp:TemplateField>
现在数据绑定后显示出来的数据为True或False,我想显示成类似于checkbox的格式,即为True时checkbox打钩,为False时不打钩。前台代码如何改?
<asp:TemplateField HeaderText="盖章">
<ItemTemplate><%# DataBinder.Eval(Container.DataItem, "Gz")%></ItemTemplate>
<ItemStyle Width="1%" BorderWidth="1px" />
<HeaderStyle HorizontalAlign="Center" />
</asp:TemplateField>
现在数据绑定后显示出来的数据为True或False,我想显示成类似于checkbox的格式,即为True时checkbox打钩,为False时不打钩。前台代码如何改?
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkA" runat="server"
Checked='<%# Convert.ToBoolean(DataBinder.Eval(Container.DataItem, "state")) %>'
AutoPostBack="True" oncheckedchanged="chkA_CheckedChanged" />
</ItemTemplate>
<ItemStyle Width="10%" HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:TemplateField>
当字段显示的是True时,取出此字段值,前用Replace将其转化为CheckBox,并选中(大致是这样转化的:Replace("True", "<asp:CheckBox id='id1' runat='server' check=true"))
当字段显示的是False时,转化为CheckBox,但未选中
可以在代码实现:
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox runat="server" ID="CheckBox1"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>protected void GridView1_RowDataBound ( object sender, GridViewRowEventArgs e )
{
if ( e.Row.RowType == DataControlRowType.DataRow )
{
if ( ( ( DataRowView ) e.Row.DataItem ).Row [ "Gz" ].ToString () == "1" )
{
( ( CheckBox ) e.Row.FindControl ( "CheckBox1" ) ).Checked = true;
}
else
{
( ( CheckBox ) e.Row.FindControl ( "CheckBox1" ) ).Checked = false;
}
}
}