CSDN博客

img xuandhu

datagrid中显布尔值

发表于2004/12/28 19:37:00  1398人阅读

http://www.blogbus.com/blogbus/blog/index.php?blogid=8085

<<<关于ADO.NET中的SqlConnection对象的Close和Open | 主页 | 编辑DataGrid控件(一)>>>
DataGrid的使用-显示布尔值、显示图像 2004-02-23


 布尔字段可以有二种值:true或者false。虽然它很简单,但是没有特有的图形表示。
如果在DataGrid中你不想用文本表示布尔字段,你可以用复选框来代替,这样更为直观。

我们下面以SQL Server2000 Northwind数据库中的Employees表为类,Employees表中有
ReportsTo的列,它包含表明某位雇员要向某人汇报的数字值。特别地,这个字段地值
是上级的雇员号,如果雇员不向任何人汇报,它就是null。

Boolean.aspx(其中DataGrid设置如下):
<asp:DataGrid Runat="server" AutoGenerateColumns="False" BackColor="white" BorderColor="black"
 Font-Name="verdana" Font-Size="x-small" CellPadding="2" CellSpacing="0" id="grid">
  <HeaderStyle BackColor="brown" ForeColor="white" Font-Bold="True" />
  <AlternatingItemStyle BackColor="palegoldenrod" />
  <ItemStyle BackColor="beige" />
  <Columns>
    <asp:BoundColumn DataField="EmployeeID" HeaderText="ID">
 <ItemStyle BackColor="lightblue" />
    </asp:BoundColumn>
  <asp:TemplateColumn HeaderText="Employee Name">
   <ItemTemplate>
     <%#DataBinder.Eval(Container.DataItem,"TitleOfCourtesy")+","+"<b>"+
      DataBinder.Eval(Container.DataItem,"FirstName")+"</b>"+
      DataBinder.Eval(Container.DataItem,"LastName")%>
   </ItemTemplate>
  </asp:TemplateColumn>
  <asp:TemplateColumn HeaderText="Reports" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center">
    <ItemTemplate>
 <asp:CheckBox Runat=server Checked='<%#HasBoss((int)DataBinder.Eval(Container.DataItem,"boss"))%>' Enabled=False/>
    </ItemTemplate>
  </asp:TemplateColumn>
  <asp:BoundColumn HeaderText="Position" DataField="title"></asp:BoundColumn>
  </Columns>
</asp:DataGrid>

当你写到复选框时,你也许比较奇怪,Employees表中更本就没有boss列呀,这里却使用对boss的绑定,是不是写错啦?呵呵,这里并非
错误,当你向下看时,你就会明白啦!

Boolean.aspx.cs中的部分代码如下:

private void Page_Load(object sender, System.EventArgs e)
{
 // 在此处放置用户代码以初始化页面
  if (!Page.IsPostBack)
  {
    OnLoadData();
  }
 }


 private void OnLoadData()
 {
  string strConn="DATABASE=Northwind;SERVER=localhost;UID=sa;PWD=;";
  SqlConnection myconn=new SqlConnection(strConn);   
  //当我语句写到这里时,大家就会明白boss列的来源啦  
  string strsql="SELECT employeeid, titleofcourtesy, firstname, lastname, title, ISNULL(reportsto,0) AS boss FROM Employees"; 
  SqlDataAdapter da=new SqlDataAdapter(strsql,myconn);
  DataSet ds=new DataSet();
  da.Fill(ds,"MyTable");
  grid.DataSource=ds.Tables["MyTable"];
  grid.DataBind();
 }
  

  public bool HasBoss(int bossID)
  {
    if (bossID==0)
    return false;
    return true;
  }

  赶快运行一下,我们来看一下效果怎么样:不错,是挺直观的,为了不让用户手工的修改复选框,我们在这里已经将复选框的属性Enable设置
为false,难怪这里看上去的复选框会是灰色的。


  如果你是一位很挑剔的人,你会对灰色的复选框的效果很不满意,对,这种效果说老实说与界面的整体风格并不是完全统一和吻合的,那么
我们需要做怎么的修改才能做到与界面风格一致呢?
 下面将用图像对此做出改进。
 Images.aspx(中DataGrid部分):

 <asp:DataGrid Runat="server" id="DataGrid1" AutoGenerateColumns="False" BackColor="white" CellPadding="2"
   CellSpacing="0" BorderStyle="solid" BorderColor="black" BorderWidth="1px" font-size="x-small"
   font-names="verdana">
  <AlternatingItemStyle BackColor="palegoldenrod" />
  <ItemStyle BackColor="beige" />
  <HeaderStyle BackColor="brown" ForeColor="white" Font-Bold="True" />
  <Columns>
    <asp:BoundColumn DataField="employeeid" HeaderText="ID">
         <ItemStyle BackColor="lightblue" Font-Bold="True" />
    </asp:BoundColumn>
    <asp:TemplateColumn HeaderText="Employee Name">
    <ItemTemplate>
 <%#DataBinder.Eval(Container.DataItem,"TitleOfCourtesy")+","+"<b>"+
 DataBinder.Eval(Container.DataItem,"LastName")+"</b>"+
 DataBinder.Eval(Container.DataItem,"FirstName")%>
    </ItemTemplate>
  </asp:TemplateColumn>
  <asp:TemplateColumn HeaderText="Reports" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center">
     <ItemTemplate>
 <asp:Image Runat=server ImageUrl='<%#GetProperGifFile((int)DataBinder.Eval(Container.DataItem,"boss"))%>'/>
     </ItemTemplate>
  </asp:TemplateColumn>
  <asp:BoundColumn DataField="title" HeaderText="Position" />
  </Columns>
</asp:DataGrid>

 Images.aspx.cs:
 绑定和Boolean.aspx.cs中对DataGrid的绑定相同,不同的部分就是GetProperGifFile函数部分:
 public  string GetProperGifFile(int bossID)
  {
    if (bossID==0)
    return "Images/unchecked.gif";
    return "Images/checked.gif";
  }

  做好上面的步骤后,让我们来看一下效果吧!



pairs   发表于  2004-02-23 15:03  引用Trackback(0) | 编辑 

Comments
发表评论

用户名:

Email:

主页:


   
最近更新
对三层结构见解
关于三层
编辑DataGrid控件(二)
编辑DataGrid控件(一)
DataGrid使用-配色方案
DataGrid的使用-显示布尔值、显示图像
关于ADO.NET中的SqlConnection对象的Close和Open
asp.net常用的javascript经典例子(一)
DataList外观
用JavaScript编写当天日期


0 0

相关博文

我的热门文章

img
取 消
img即使是一小步
也想与你分享
打开
img