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

时间: 2008-06-20 / 分类: 学习心得 / 浏览次数: 5,534 / 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了,其实说简单也很简单,希望对大家有用。

历史上的今天

2013年:如何查看安卓设备中保存的WIFI密码[译文208](51条评论)

2012年:博客最近二三事(89条评论)

2011年:功能丰富的跨平台媒体播放器UMPlayer[译文176](62条评论)

2010年:快乐星期天106期:广告的山寨和竞争(32条评论)

2006年:今天仿佛是个好日子(0条评论)

发表评论

您的昵称 *

您的邮箱 *

您的网站