一.数据访问控件的区别
1.功能从弱到强依次为Repeater->DataList->DataGrid
2.功能明细
<!--...............Repeater:....................................................................->
能够绑定显示基本的数据,方便使用,灵活,自主选择性大
有5种模板: ItemTemplate,HeaderTemplate,FooterTemplate,SeparatorTemplate,AlternatingItemTemplate
<!--...............DataList:.....................................................................->
除了Repeater的功能之外,还有编辑,查询的功能
SelectedItemTemplate,EditItemTemplate
(当一次只显示主题信息,然后点击详细信息时再显示SelectedItemTemplate里的内容,ItemTemplate里要设置 LinkButton,CommandName="select",DataList属性里设置事件响应OnItemCommand="DataList_ItemCommand")
eg:
public void DataList_ItemCommand(Object sender,DataListCommandEventArgs e)
{
score.SelectedIndex=e.Item.ItemIndex;
ListBind();
}
(当要编辑的时候,项模板也要设置,只是CommandName="edit",再显示EditItemTemplate里的内容,里面有两个 LinkButton,CommandName="edit",CommandName="cancel")
eg:
<asp:DataList />
</ItemTemplate>
<EditItemTemplate>
姓名:<asp:Label />
</EditItemTemplate>
</asp:DataList>
eg:
public void DataList_EditCommand(Object sender,DataListCommandEventArgs e)
{
score.EditItemIndex=(int)e.Item.ItemIndex;
ListBind();
}
public void DataList_CancelCommand(Object sender,DataListCommandEventArgs e)
{
score.EditItemIndex=-1;(默认为-1时为初始状态)
ListBind();
}
public void DataList_UpdateCommand(Object sender,DataListCommandEventArgs e)
{
int intChinese=Int32.Parse(((TextBox)e.Item.FindControl("tbChinese")).Text);
..........................
..........................
string strUpdate="update Score set Chinese='"+intChinese+"',...,...,
执行修改更新即可
score.EditItemIndex=-1;
ListBind();
}
DataList属性里有RepeatLayout默认为Table,也可以设置为Flow则和Repeater一样
DataList属性里有RepeatDirection和RepeatColumns可以在不严格定义表格的情况下显示布局
<!--....................DataGrid......................................................................->
有BoundColumn,HyperLinkColumn,ButtonColumn(事件为OnItemCommand,ButtonType属性可设置为pushButton成为标准Button按钮),EditCommandColumn,TemplateColumn(下面有ItemTemplate,HeaderTemplate,FooterTemplate等等)
有分页,排序,编辑,查询功能等
EditCommandColumn属性里设置EditText,CancelText,UpdateText,ButtonType等属性,
然后绑定列,DataGrid里设置响应事件OnEditCommand,OnCancelCommand,OnUpdateCommand,编写事件响应函数代码
(Object sender,DataGridCommandEventArgs e)
分页功能:
DataGrid属性里设置];
score.DataSource=dv;
score.DataBind();
}//////*******利用了视图的(dv.Sort)Sort属性
注:绑定列中必须设置SortExpression属性
删除功能:
可以通过e.Item.ItemIndex获得索引项,然后新建一行,DataRow dr=ds.Tables[tablename].Rows[(int)e.Item.ItemIndex]
dr.Delete();
adr.Update(ds,tablename);
但这样会有一个不好处,就是如果有DataGrid排序功能,则不能根据索引来删除,可以绑定一个id,然后根据e.Item.Cell[0].Controls[0],获得 id,然后据id删除,或者e.Item.FindControl["id"];
得到id号
编辑功能:
和DataList一样,略.........................