转来自百度知道里的:学习网络安全的小结(心得体会)
2009-08-08 11:51
681 查看
这种情况经常都会有的,就是在GridView里加一个模版列,里面放一些按钮,然后呢,点击这些按钮的时候,要可以取到GridView当前被点击的行的字段里的内容
一般有两种情况,只需要取一个字段的值,和要取多个字段的值,其实都是一样的方法,就是使用CommandArgument属性
一、只需要取一个字段的值:
在GridView里的定义
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:Button ID="Button1" runat="server" Text="取编号" CommandArgument='<%# Eval("id") %>' CommandName="getID" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
红色那里,就是设置这个按钮带到传递的参数是当前行的id字段的值,看后台的代码
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "getID")
{
Response.Write("<br>id:" + e.CommandArgument);
Button mybt = new Button();
mybt = (Button)e.CommandSource;
Response.Write("<br>text:" + mybt.Text);
Response.Write("<br>type:" + sender.GetType().ToString());
}
看见我使用了e.CommandSource取被点击的按钮的Text属性没有?
有时候按钮可能会因为一个字段的值不同,就有不同的Text属性,嗯,如果一个表里有记录“是否启用”这样的字段,就经常需要在显示他的 GridView里加模版列,显示“启用”、“禁用”这样的快速操作按钮,如果每一行记录都显示两个按钮,是很难看的,所以可以使用一个按钮,进行两种操 作,按钮可以这样定义:
<asp:Button ID="Button1" runat="server" Text='<%# Convert.ToInt32(Eval("isUse"))==0:"启用"?"禁用" %>' CommandArgument='<%# Eval("id") %>' CommandName="getID" />
看他的Text属性,如果isUse字段的值是0,那当前记录是在禁用状态的,所以快捷操作按钮应该显示“启用”,否则呢,就显示“禁用”
然后呢,就可以在RowCommand事件里,使用e.CommandSource取这个按钮的Text属性,判断当前的操作是要“启用”还是“禁用”了
二、要取多个字段的值
因为CommandArgument属性只可以传递一个值,所以如果要传递多个字段的值的时候,最好是转化成传递当前行的行号,如果我们有GridView的一个行号,我们就可以取到这一行的所有数据了
在GridView里的定义
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:Button ID="Button2" runat="server" Text="取行号" CommandArgument='<%# Container.DataItemIndex + 1 %>' CommandName="getRow" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
看红色那里,利用了绑定<%# Container.DataItemIndex + 1 %>传递当前行号,DataItemIndex是从0开始的,所以每一行都要加1
后台
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "getRow")
{
Response.Write("当前行号为:" + e.CommandArgument);
}
}
有了当前行的行号,就可以用GridView1.Rows[e.CommandArgument].Cells[i].Text取第i列的值了,如果有一列是模版列,也可以用FindControl方法取值
GridView默认分页:
AllowPaging属性设置为True
在PageIndexChanging事件下如下写即可:
gridView1.PageIndex = e.NewPageIndex;
三、
给模板列设置一个参数属性
HTML code
C# code
一般有两种情况,只需要取一个字段的值,和要取多个字段的值,其实都是一样的方法,就是使用CommandArgument属性
一、只需要取一个字段的值:
在GridView里的定义
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:Button ID="Button1" runat="server" Text="取编号" CommandArgument='<%# Eval("id") %>' CommandName="getID" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
红色那里,就是设置这个按钮带到传递的参数是当前行的id字段的值,看后台的代码
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "getID")
{
Response.Write("<br>id:" + e.CommandArgument);
Button mybt = new Button();
mybt = (Button)e.CommandSource;
Response.Write("<br>text:" + mybt.Text);
Response.Write("<br>type:" + sender.GetType().ToString());
}
看见我使用了e.CommandSource取被点击的按钮的Text属性没有?
有时候按钮可能会因为一个字段的值不同,就有不同的Text属性,嗯,如果一个表里有记录“是否启用”这样的字段,就经常需要在显示他的 GridView里加模版列,显示“启用”、“禁用”这样的快速操作按钮,如果每一行记录都显示两个按钮,是很难看的,所以可以使用一个按钮,进行两种操 作,按钮可以这样定义:
<asp:Button ID="Button1" runat="server" Text='<%# Convert.ToInt32(Eval("isUse"))==0:"启用"?"禁用" %>' CommandArgument='<%# Eval("id") %>' CommandName="getID" />
看他的Text属性,如果isUse字段的值是0,那当前记录是在禁用状态的,所以快捷操作按钮应该显示“启用”,否则呢,就显示“禁用”
然后呢,就可以在RowCommand事件里,使用e.CommandSource取这个按钮的Text属性,判断当前的操作是要“启用”还是“禁用”了
二、要取多个字段的值
因为CommandArgument属性只可以传递一个值,所以如果要传递多个字段的值的时候,最好是转化成传递当前行的行号,如果我们有GridView的一个行号,我们就可以取到这一行的所有数据了
在GridView里的定义
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:Button ID="Button2" runat="server" Text="取行号" CommandArgument='<%# Container.DataItemIndex + 1 %>' CommandName="getRow" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
看红色那里,利用了绑定<%# Container.DataItemIndex + 1 %>传递当前行号,DataItemIndex是从0开始的,所以每一行都要加1
后台
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "getRow")
{
Response.Write("当前行号为:" + e.CommandArgument);
}
}
有了当前行的行号,就可以用GridView1.Rows[e.CommandArgument].Cells[i].Text取第i列的值了,如果有一列是模版列,也可以用FindControl方法取值
GridView默认分页:
AllowPaging属性设置为True
在PageIndexChanging事件下如下写即可:
gridView1.PageIndex = e.NewPageIndex;
三、
给模板列设置一个参数属性
HTML code
CommandArgs='<%#((GridViewRow)Container).RowIndex%>'
C# code
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "AddToCart") { int index = Convert.ToInt32(e.CommandArgument); } }
相关文章推荐
- 院外培训:GIS数据处理与建模高级培训班学习心得体会 来自
- 网络攻防学习心得一(20159320)学习小结
- 弘扬传统文化、构建和谐社会 学习中国传统文化心得体会 网络征文比赛
- 黑马程序员—10—java基础:有关多线程安全的学习笔记和学习心得体会
- 黑马程序员—21—java基础:有关网络编程的学习笔记和学习心得体会
- 网络报表学习体会心得!
- 学习“5S”管理心得体会
- Java 网络编程基础学习小结
- 黑马程序员—12—java基础:有关字符串的学习笔记和学习心得体会
- 黑马程序员—19—java基础:有关File类的学习笔记和学习心得体会
- 黑马程序员—24—java面试:有关银行调度学习笔记和学习心得体会
- 网络编程学习心得
- 【网络安全】DDoS解决方法小结
- HTML5基础入门学习心得体会
- 备战CTF刷题(一)网络信息安全攻防学习平台——基础题
- 【学习心得】正则表达式小结
- wxhl ios bj 49期 张浩 学习心得体会文章连载 第7章
- 计算机网络学习心得(三)----物理层
- FLEX与Cairngorm框架学习使用心得体会
- 第二天课程的心得体会以及小结