欢迎光临
我们一直在努力

DataGrid的列操作个人总结-ASP教程,数据库相关

建站超值云服务器,限时71元/月

绑定列

<asp:boundcolumn

datafield="datetime" 字段名

headertext="时间" 列表头

headerimagerurl=""> 显示于列页眉中的图片,此图片会取代headertext的文本

</asp:boundcolumn>

如果“自动创建列”为true,则绑定列先显示,接着显示自动列,而且自动生成的列不会被加入到columns集合中。

超级链接列

<asp:hyperlinkcolumn

text="文本" //各列显示相同的文本,此时datatextfield优先

datatextfield="代码" //绑定的字段名

datatextformatstring="" //来自定义datatextfield的显示格式

navigateurl="url" //所有列使用同一url

datanavigateurlfield="codeid" //url字段变量,即传递的变量值,有时和datatextfield同

datanavigateurlformatstring="webform2.aspx?code={0}" url格式字符串,get方式传递的字符串

target="_blank" > //打开链接打开的位置或方式

</asp:hyperlinkcolumn>

按钮列

<columns>

普通按钮

<asp:buttoncolumn

text="所有列统一按钮名" //所有列统一按钮名

datatextfield="持股名称" //绑定字段

commandname="btn"> //

headertext="操作"> //列表头

</asp:buttoncolumn>

选择按钮

<asp:buttoncolumn

text="选择"

datatextfield="持股名称"

commandname="select">

</asp:buttoncolumn>

编辑按钮

<asp:editcommandcolumn

buttontype="linkbutton"

updatetext="更新"

canceltext="取消"

edittext="编辑">

</asp:editcommandcolumn>

删除按钮

<asp:buttoncolumn

text="删除"

buttontype="pushbutton"

commandname="delete">

</asp:buttoncolumn>

</columns>

commandname设置在datagrid1_itemcommand()事件中

获取同一行中哪个按钮被点击: string s=e.commandname;

//默认是linkbutton,也必须是linkbutton

单击按钮首先响应 datagrid1_itemcommand 事件

private void datagrid1_itemcommand(object source, system.web.ui.webcontrols.datagridcommandeventargs e)

{

tablerow tr=e.item; //得到操作的当前行,存入控件

string code=tr.cells[1].text; //丛控件再得到单元格的文本

string time=tr.cells[2].text;

tablecell cell1=e.item.cells[1]; //这样也可以取得单元格的值,存入控件

server.transfer("webform2.aspx?code="+code+" &or time="+time);

}

接着不同按钮响应不同事件:

编辑

private void datagrid1_editcommand(object source, system.web.ui.webcontrols.datagridcommandeventargs e)

{

this.datagrid1.edititemindex=e.item.itemindex;

this.datashow();

}

更新

private void datagrid1_updatecommand(object source, system.web.ui.webcontrols.datagridcommandeventargs e)

{

//得到主键列的值

int i=(int)this.datagrid1.datakeys[e.item.itemindex];

或 string ii=(string)this.datagrid1.datakeys[e.item.itemindex];

根据主键,用单元格的数据更新主键对应的纪录

//写update语句

}

取消

private void datagrid1_cancelcommand(object source, system.web.ui.webcontrols.datagridcommandeventargs e)

{

this.datagrid1.edititemindex=-1;

this.datashow();

}

注意:可以将主键绑定列设为只读;

删除

//应首先设置datakeyfield属性为主键列

private void datagrid1_deletecommand(object source, system.web.ui.webcontrols.datagridcommandeventargs e)

{

//得到主键列的值

int i=(int)this.datagrid1.datakeys[e.item.itemindex];

或 string ii=(string)this.datagrid1.datakeys[e.item.itemindex];

//写删除语句,

}

当在到服务器发送之间,在数据列表控件中选择不同的项时,引发 selectedindexchanged 事件

也可通过int i2 =(int)this.datagrid1.datakeys[this.datagrid1.selectedindex];得到主键值

datakeyfield 是一个字段,他的所有键值内容被填入datakeys集合中,通过datakeys[]来去某条记录的主键值

排序

指定默认排序 :

选择“自动创建列”true;

在“行为”部分,选择“允许排序”框。

在sortcommand 事件里,通过e.sortexpression对视图重新排序绑定。

(缺点:每一列都有“链接”按钮,)

指定自定义排序:

选择“自动创建列”false;

在需要排序的列,设置sortexpression

注意:没有排序表达式的列将不引发 sortcommand 事件,所以先设置排序表达式

private void datagrid1_sortcommand(object source, system.web.ui.webcontrols.datagridsortcommandeventargs e)

{

string sql="server=127.0.0.1;database=ltp;user id=sa;password=";

sqlconnection mycon=new sqlconnection(sql);

string selsql="select * from data";

sqldataadapter da=new sqldataadapter(selsql,mycon);

dataset ds=new dataset();

da.fill(ds,"data");

dataview dv= new dataview(ds.tables["data"]);

dv.sort= e.sortexpression.tostring(); //设置排序关键字

this.datagrid1.datasource=dv; //重新绑定

this.datagrid1.databind();

}

通过模版列来显示字段数据时,可以在模版列的<headertemplate>加控件来执行排序。

按钮的commandargument设置成 排序表达式,(为了sortcommand 事件能取到)

按钮的commandname="sort",务必小写

模版列

可以自行决定要在列中显示哪些控件(一个或多个),以及这些控件要绑定哪些字段。

加入模版列的按钮会将其click事件反升到datagrid1_itemcommand事件,但要判断commandname

编辑模版\里、直接把控件拖进去即可。

注意 如果您调用了父控件(datalist、repeater 或 datagrid 控件)的 databind 方法,itemcommand 事件将不会发生,原因是父控件的内容已经重置。因此,您通常不需要在每次往返时调用 databind 方法(即在初始化页时无需检查发回)。

<asp:templatecolumn>

<headertemplate>

<font face="宋体">模板列</font> //表头

</headertemplate>

<itemtemplate>

<asp:imagebutton id="imagebutton1" runat="server" imageurl="d:\img\image\button_add.gif">

</asp:imagebutton>

</itemtemplate>

<edititemtemplate>

//这一行是当选择编辑按钮时,显示的控件或文本

</edititemtemplate>

</asp:templatecolumn>

得到模版列中控件的值(datagrid1_itemcommand事件中)

dropdownlist listctr=(dropdownlist)e.item.findcontrol("dropdownlist2");

string s=listctr.selectedvalue;

checkbox box=(checkbox)e.item.findcontrol("checkbox1");

bool b=box.checked;

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » DataGrid的列操作个人总结-ASP教程,数据库相关
分享到: 更多 (0)