在RowCommand事件中怎样读取GridView中某字段的值?

Cassava 2007-08-08 12:03:57
我在GridView中添加一个删除的模板列
<asp:TemplateField HeaderText="删除">
<ItemTemplate>
<SPAN onclick="return window.confirm('你确定要删除该记录吗?')">
<asp:LinkButton ID="LinkButton1" CommandName="Del" CommandArgument='<%# Eval("AutoID") %>' runat="server" Text="删除"></asp:LinkButton>
</SPAN>
</ItemTemplate>
</asp:TemplateField>
还有一个DataField列
<asp:BoundField DataField="IsAdminRole" HeaderText="系统默认角色" />
后台删除代码
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
switch (e.CommandName)
{
case "Del": //删除数据
if(e.Item.Cells[0].Text.Trim()=="True") //判断是不是系统的默认角色,这样写是错误的,应该怎么写呢?
ScriptManager.RegisterClientScriptBlock(UpdatePanel1, this.GetType(), "click", "alert('该角色为系统默认角色不可以删除 !')", true);
else
conn.ExeSql("delete " + TableName + " where AutoID=" + e.CommandArgument.ToString());
break;
}
GridView1.DataBind();
}

即怎样才能在RowCommand事件中取得IsAdminRole字段的值?在VS2003中是可以这样写的e.Item.Cells[0].Text.Trim(),不知道在VS2005应该怎么写?
...全文
1932 24 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
hecong875 2007-10-22
  • 打赏
  • 举报
回复
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow RowData = GridView_CertificateState.Rows[index];

Label_ID.Text = RowData.Cells[1].Text.ToString();//获取对应行第二列的单元格数据

TextBox_CertificateState.Text = RowData.Cells[2].Text.ToString();
为什么我点不出 CELLS
showmy 2007-08-08
  • 打赏
  • 举报
回复
都说完了 JF up
GridView1.Rows[e.RowIndex].Cells[列名].Text
michaelowenii 2007-08-08
  • 打赏
  • 举报
回复
GridView1.Rows[e.RowIndex].Cells[列名].Text
Jinglecat 2007-08-08
  • 打赏
  • 举报
回复
即怎样才能在RowCommand事件中取得IsAdminRole字段的值?在VS2003中是可以这样写的e.Item.Cells[0].Text.Trim(),不知道在VS2005应该怎么写?

========

方法比较多, GridView 的 Command 事件中无法象 DataGrid 那样直接获取行,

法1,
Control cmdControl = e.CommandSource as Control;
row = cmdControl.NamingContainer as GridViewRow;
string str = row.Cell[0].Text;
// .....

更多信息见:
ASP.NET DEMO 5:如何在GridView的RowCommand事件中获取当前的GridViewRow
http://www.cnblogs.com/Jinglecat/archive/2007/07/05/806460.html

zwwlovezy1 2007-08-08
  • 打赏
  • 举报
回复
GridView1.Rows[e.RowIndex].Cells[列名].Text
孟子E章 2007-08-08
  • 打赏
  • 举报
回复
e.Row.
jeff_stone 2007-08-08
  • 打赏
  • 举报
回复
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow RowData = GridView_CertificateState.Rows[index];

Label_ID.Text = RowData.Cells[1].Text.ToString();//获取对应行第二列的单元格数据

TextBox_CertificateState.Text = RowData.Cells[2].Text.ToString();
//获取对应行第三列的单元格数据

godgreat 2007-08-08
  • 打赏
  • 举报
回复
shit
godgreat 2007-08-08
  • 打赏
  • 举报
回复
to Cassava(车超)
在RowCommand事件中是没有e.Row的属性的,在RowDataBound中才有e.Row
非常感谢各位的帮助
-------
试下我的方法
Cassava 2007-08-08
  • 打赏
  • 举报
回复
在RowCommand事件中是没有e.Row的属性的,在RowDataBound中才有e.Row
非常感谢各位的帮助
  • 打赏
  • 举报
回复
哦,打字时没有注意到看到上面已经回答了,呵呵。
  • 打赏
  • 举报
回复
你写的是:
CommandArgument='<%# Eval("AutoID") %>'
那么就按照这个查询数据源或者数据库。

如果写成:
CommandArgument='<%# Container.DataItemIndex %>'
其实更灵活一些。
amandag 2007-08-08
  • 打赏
  • 举报
回复
看你自己的 e.CommandArgument 逻辑。
================================
一开始看到这里的时候就想说,你这个e.CommandArgument 去绑定字段是很不合理的,一般而言他绑定的是主键列或索引值 比如 CommandArgument='<%# Container.Row.RowIndex%>'

然后在执行删除的你需要的<%# Eval("AutoID")完全可以根据主键列或索引找到,换而言之,你把这么重要的东西绑定到了一个不重要的东西上面,思路不好
  • 打赏
  • 举报
回复
看你自己的 e.CommandArgument 逻辑。
WNASP 2007-08-08
  • 打赏
  • 举报
回复
都说完了,俺就接分了!
typ668 2007-08-08
  • 打赏
  • 举报
回复
楼上的都说了
godgreat 2007-08-08
  • 打赏
  • 举报
回复
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
int nIdx = Convert.ToInt32(e.CommandArgument.ToString());

GridViewRow row = this.GridView1.Rows[nIdx];

string strFID = row.Cells[0].Text;
try
{
switch (e.CommandName)
{
case "upd":
//..........
break;
case "del":
//...........
break;
}
}
catch (Exception ex)
{
EScript.PopEx(this, "GridView1_RowCommand", "数据处理时出错:\\n" + ex.Message);
}
}
------------------------------------------
string strFID = row.Cells
  • .Text; //*写上你IsAdminRole字段index下标从0开始,自己去前台数
海阔天空 2007-08-08
  • 打赏
  • 举报
回复
这要看你用的是什么了,用的模版列的话((TextBox)GridView1.Rows[e.RowIndex].Cells[列].Controls[0]).Text这样好用一些!
godgreat 2007-08-08
  • 打赏
  • 举报
回复
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
int nIdx = Convert.ToInt32(e.CommandArgument.ToString());

GridViewRow row = this.GridView1.Rows[nIdx];

string strFID = row.Cells[0].Text;
try
{
switch (e.CommandName)
{
case "upd":
//..........
break;
case "del":
//...........
break;
}
}
catch (Exception ex)
{
EScript.PopEx(this, "GridView1_RowCommand", "数据处理时出错:\\n" + ex.Message);
}
}
shilei831115 2007-08-08
  • 打赏
  • 举报
回复
http://shilei831115.blog.hexun.com/7783567_d.html]

呵呵 接分
加载更多回复(4)

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧