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());
.....
//进行编辑操作
}
}
还可以增加一个BoundColumn ,绑定数据到ID,
int SId = Convert.ToInt32( e.FindControl("SId").ToString() ) ;
关于DataGrid分页