ASP.NET:GridView中模板列、RowCommand和行号获取

时间: 2008-06-20 / 分类: 学习心得 / 浏览次数: 1,519 views / 0个评论 发表评论

这里主要是解决GridView中添加了模板列,模板列里面放置了按钮,怎么通过CommandArgument来获取行号,以及通过CommandName执行命令的过程。废话不多说,用代码说话:

页面代码<body>部分:看下面的红字部分,Button属性主要是CommandName和CommandArgument两个,其中CommandArgument用来获取所在GridView的行号。

   
<form id=form1
runat=server>
   
<div>
   
<asp:ScriptManager ID=ScriptManager1
runat=server></asp:ScriptManager>

   
<asp:UpdatePanel ID=UpdatePanel1
runat=server>
       
<ContentTemplate>
           
<asp:GridView ID=GridView1 runat=server
AutoGenerateColumns=false AllowPaging=true PageSize=15
OnPageIndexChanging=GridView1_OnPageIndexChanging
OnRowCommand=GridView1_OnRowCommand>
               
<Columns>
                   
<asp:BoundField DataField=UserID
HeaderText=用户ID />
                   
<asp:BoundField DataField=UserName
HeaderText=用户名 />
                   
<asp:BoundField DataField=Email
HeaderText=邮箱 />
                   
<asp:BoundField DataField=Been_freezed
HeaderText=是否冻结 ItemStyle-HorizontalAlign=center
/>
                 

                   
<asp:TemplateField
ItemStyle-HorizontalAlign=center
ItemStyle-Width=80px>
                       
<ItemTemplate>
                           
<asp:Button ID=freezeButton
Text=冻结 runat=server CommandName=freeze
CommandArgument='<%#
DataBinder.Eval(Container,RowIndex) %>'
BorderStyle=Groove OnClientClick=javascript:return
confirm('确定?'); 
/>

                       
</ItemTemplate>
                   
</asp:TemplateField>
               
</Columns>
           
</asp:GridView>
       
</ContentTemplate>
   
</asp:UpdatePanel>
   
</div>
   
</form>

Code-Behind代码:具体说明请看代码中的注释部分。

   
protected void dataBind()
    {
       
this.GridView1.DataSource = this.objUser.ReturnUserInfo();
       
this.GridView1.DataBind();

       
for (int i = 0; i < this.GridView1.Rows.Count;
i++)
       
{
           
if (this.GridView1.Rows[i].Cells[3].Text.Trim() == )
           
{
               
this.GridView1.Rows[i].Cells[3].Text = 否;
           
}
           
else
           
{
               
this.GridView1.Rows[i].Cells[3].Text = 是;
               
Button
b=(Button)this.GridView1.Rows[i].Cells[4].FindControl(freezeButton);

               
b.Text = 解冻;
               
b.BorderStyle = BorderStyle.Solid;
           
}
       
}
    }

   
protected void GridView1_OnPageIndexChanging(object sender,
GridViewPageEventArgs e)
    {
       
int index = e.NewPageIndex;
       
this.GridView1.PageIndex = index;

       
this.dataBind();
    }

   
protected void GridView1_OnRowCommand(object
sender,GridViewCommandEventArgs e)
    {
       
int index =
Convert.ToInt32(e.CommandArgument);  
//获取行号
       
GridViewRow row =
GridView1.Rows[index];       //所在的行
       
int userid =
Convert.ToInt32(row.Cells[0].Text.Trim()); //所在行的第一列,用户ID

       
//通过FindControl找到模板列中的按钮,其ID为“freezeButton”

       
Button b =
(Button)row.Cells[4].FindControl(freezeButton);

       
string freeze = ;
       
if (e.CommandName.ToString() == (freeze))
       
{
           
if (b.Text.Trim() == 冻结)
           
{
               
freeze = 1;
               
this.objUser.SetUserFrozen(userid,freeze);
               
b.Text = 解冻;
               
b.BorderStyle = BorderStyle.Solid;
           
}
           
else
           
{
               
freeze = ;
               
this.objUser.SetUserFrozen(userid, freeze);
               
b.Text = 冻结;
               
b.BorderStyle = BorderStyle.Groove;
           
}
       
}

       
this.dataBind();
    }

OK了,其实说简单也很简单,希望对大家有用。

===================博客订阅列表=================

 
 

 

 
 
 

 
 

 

===================最新文章列表=================



博客订阅(RSS FEED)
 


[toluu]
St Louis™ 生活、学习


[feedsky]
St Louis™ 生活、学习


[feedburner]
St Louis™ 生活、学习

ASP.NET:The Server tag is not well formed解决

VS2005未能加载文件或程序集Microsoft.Build.Engine


PageRequestManagerParserErrorException错误




ASP.NET:在TextBox中实现鼠标点击文本消失


ASP.NET:ListBox数据合并问题


ASP.NET中关于GridView使用的几个问题


使用 
JavaScript 更新 UpdatePanel
 


GridView里面的HyperLink和ButtonField操作总结


又解决了几个问题:DropdownList和UpdatePanel


GridView.RowDeleting 
事件
 


[ASP.NET 
2.0]关于GridView的一些操作
 


CSS真的很好很强大


解析SQLServer事务日志压缩与删除的方法


IIS 
+ ASP.NET 2.0调试过程
 


[ASP.NET]Response.Redirect转到页面并刷新
 


Firefox Download 
Day & Firefox Portable 3.0


没有如期等到Firefox3.0的下载


解聘范跑跑、古巴男孩埃连和河南农信社招考风波


泰迪罗宾专辑:《点指泰迪罗宾》、《真经典》


新浪空间升级,新浪也要SNS?
 


[TweetStats]记录你的Twitter状态


快乐星期天第一期:超级囧的歌名


Timetoast:个性化的时间线服务


[Twitter Counter]跟踪记录你的Followers数量
 


范跑跑之歌&范跑跑之歌的十不该
 


[Twitter Themes]3款Twitter主题

分享 |

发表评论

您的昵称 *

您的邮箱 *

您的网站