DataGrid等数据控件的用法(2)

简单介绍DataGrid数据控件的基本情况。
如何用DataGrid显示数据库数据。
aspx:
    <asp:DataGrid id="ForumStarDataGrid" runat="server" BorderWidth="1px" BackColor="White" AutoGenerateColumns="False"
          AllowPaging="True" BorderColor="DarkGray" Width="100%">
          <HeaderStyle Wrap="False" HorizontalAlign="Center" Height="30px"></HeaderStyle>
          <Columns>
           <asp:TemplateColumn HeaderText="呢称">
            <ItemStyle Wrap="False" HorizontalAlign="Center" Width="30%"></ItemStyle>
            <ItemTemplate>
             <%#  DataBinder.Eval(Container.DataItem, "NickName")%>
            </ItemTemplate>
           </asp:TemplateColumn>
           <asp:TemplateColumn HeaderText="图片">
            <ItemStyle Wrap="False" HorizontalAlign="Center" Width="30%"></ItemStyle>
            <ItemTemplate>
             <%#  showPhoto( DataBinder.Eval(Container.DataItem, "StarPhoto").ToString()  )%>
            </ItemTemplate>
           </asp:TemplateColumn>
           <asp:TemplateColumn HeaderText="今日之星">
            <ItemStyle Wrap="False" HorizontalAlign="Center" Width="30%"></ItemStyle>
            <ItemTemplate>
             <%# setStar( DataBinder.Eval(Container.DataItem, "IsStar").ToString() )%>
            </ItemTemplate>
           </asp:TemplateColumn>
           <asp:TemplateColumn HeaderText="操作">
            <ItemTemplate>
             <asp:Button id="editBT" runat="server" BorderWidth="1px" Text="编辑" CausesValidation="false"
             CssClass="button1" CommandName="editStar"></asp:Button>
            </ItemTemplate>
           </asp:TemplateColumn>
           <asp:TemplateColumn HeaderText="操作">
            <ItemTemplate>
             <asp:Button id="setStarBT" runat="server" BorderWidth="1px" Text="设为论坛之星" CausesValidation="false"
             CssClass="button1" CommandName="setStar"></asp:Button>
            </ItemTemplate>
           </asp:TemplateColumn>
           <asp:TemplateColumn HeaderText="操作">
            <ItemTemplate>
             <asp:Button id="delStarBT" runat="server" BorderWidth="1px" Text="删除" CausesValidation="false"
             CssClass="button1" CommandName="delStar"></asp:Button>
            </ItemTemplate>
           </asp:TemplateColumn>
          </Columns>
          <PagerStyle Mode="NumericPages"></PagerStyle>
         </asp:DataGrid>


aspx.cs

  private void Page_Load(object sender, System.EventArgs e)
  {
   if(!IsPostBack)
   {
    ForumStarDataGridDataBind();
   }
  }

  private void ForumStarDataGridDataBind()
  {
   ForumStarBiz forumStarBiz = new ForumStarBiz();
   DataSet ds = forumStarBiz.getForumStarInfo();

   ForumStarDataGrid.DataKeyField = "SId";
   ForumStarDataGrid.DataSource = ds;
   ForumStarDataGrid.DataBind();
  }


好,现在来分析这段代码,注意到几点
1)使用模板列可以很好的控制显示,可以利用cs中方法对某个字段进行处理,以得到最终结果。
2)列表中的按钮操作。
  a.采用ButtonColumn 。直接以按钮形式体现,点击按钮将对DataGrid中某条记录进行操作。
  b.采用例子中的模板列,在模板列中放置按钮控件。
两者都将触发DataGrid的ItemCommand事件,
 private void ForumStarDataGrid_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
  {
   if(e.CommandName=="editStar") //编辑
   {
//获取编辑所需要的ID 
int SId = Convert.ToInt32( ForumStarDataGrid.DataKeys[e.Item.ItemIndex].ToString());
.....
//进行编辑操作
   }
}

<%# DataBinder.Eval(Container.DataItem, "NickName")%><%# showPhoto( DataBinder.Eval(Container.DataItem, "StarPhoto").ToString() )%><%# setStar( DataBinder.Eval(Container.DataItem, "IsStar").ToString() )%><%# DataBinder.Eval(Container.DataItem, "NickName")%><%# showPhoto( DataBinder.Eval(Container.DataItem, "StarPhoto").ToString() )%><%# setStar( DataBinder.Eval(Container.DataItem, "IsStar").ToString() )%><%# DataBinder.Eval(Container.DataItem, "NickName")%><%# showPhoto( DataBinder.Eval(Container.DataItem, "StarPhoto").ToString() )%><%# setStar( DataBinder.Eval(Container.DataItem, "IsStar").ToString() )%><%# DataBinder.Eval(Container.DataItem, "NickName")%><%# showPhoto( DataBinder.Eval(Container.DataItem, "StarPhoto").ToString() )%><%# setStar( DataBinder.Eval(Container.DataItem, "IsStar").ToString() )%>获取ID,可以设置DataGrid的 DataKeyField 为ID,然后,再用例子中的方法取得。
还可以增加一个BoundColumn ,绑定数据到ID,
int SId = Convert.ToInt32(  e.FindControl("SId").ToString() ) ;


关于DataGrid分页

posted @ 2004-04-23 15:06  9527的晃悠人生  阅读(713)  评论(0编辑  收藏  举报