列与模版列的问题

g497772921 2009-12-14 09:43:46
原来是这样: <asp:CommandField CancelText="Cancel" DeleteText="Delete" HeaderText="Add"
ShowDeleteButton="True" ShowHeader="True" >

<ItemStyle HorizontalAlign="Center" />
</asp:CommandField>

我改为模版列后变成这样: <asp:TemplateField HeaderText="Add">
<ItemTemplate>
<asp:LinkButton ID="delete" runat="server" CausesValidation="False" CommandName="Delete"
Text="Delete"></asp:LinkButton>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
<HeaderTemplate>
<asp:Button ID="Add" runat="server" Text="Add" />
</HeaderTemplate>
</asp:TemplateField>


但改为模版列之后就后台出错了:

((LinkButton)e.Row.Cells[3].Controls[0]).Attributes.Add("onclick", "javascript:return confirm('你确认要删除:\"" + e.Row.Cells[1].Text + "\"吗?')");

提示的错误是:System.InvalidCastException: 无法将类型为“System.Web.UI.LiteralControl”的对象强制转换为类型“System.Web.UI.WebControls.LinkButton”。
我应该把(LinkButton)改成什么呢?我是刚学的,不会吖!
...全文
111 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
itliyi 2009-12-14
  • 打赏
  • 举报
回复
模板列控件索引 为 1
itliyi 2009-12-14
  • 打赏
  • 举报
回复
改成这样:((LinkButton)e.Row.Cells[3].Controls[1]
breezekey 2009-12-14
  • 打赏
  • 举报
回复
Button btn = e.Row.FindControl("btn") as Button;
//取第3列单元格内容
string a = ((DataRowView)e.Row.DataItem).Row.ItemArray[2].ToString();
btn.Attributes.Add("onclick", "javascript:return confirm('您确定要删除:" + a + "吗?')");

这样OK。
breezekey 2009-12-14
  • 打赏
  • 举报
回复
string a = ((DataRowView)e.Row.DataItem).Row.ItemArray[2].ToString();
btn.Attributes.Add("onclick", "javascript:return confirm('" + a + "')");

试下这个
breezekey 2009-12-14
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 g497772921 的回复:]
引用 15 楼 breezekey 的回复:
LinkButton lbtn =  e.Row.FindControls("delete") as LinkButton;
Label lblmessage = e.Row.FindControls("message")as Label;
lbtn.Attributes.Add("onclick","javascript:return confirm('您确定要删除:"+lblmessage.Text+"吗?')");
上面那个回复写错了点


但BoundField没有ID这个属性
[/Quote]
绑定列好像是取不到,帮你顶吧
g497772921 2009-12-14
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 breezekey 的回复:]
LinkButton lbtn =  e.Row.FindControls("delete") as LinkButton;
Label lblmessage = e.Row.FindControls("message")as Label;
lbtn.Attributes.Add("onclick","javascript:return confirm('您确定要删除:"+lblmessage.Text+"吗?')");
上面那个回复写错了点

[/Quote]
但BoundField没有ID这个属性
breezekey 2009-12-14
  • 打赏
  • 举报
回复
LinkButton lbtn = e.Row.FindControls("delete") as LinkButton;
Label lblmessage = e.Row.FindControls("message") as Label
lbtn.Attributes.Add("onclick","javascript:return confirm('您确定要删除:"+lblmessage.Text+"吗?')");
上面那个回复写错了点
breezekey 2009-12-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 g497772921 的回复:]
引用 6 楼 breezekey 的回复:
LinkButton lbtn =  e.Row.FindControl("delete") as LinkButton;
lbtn.Attributes.Add("onclikc","......");


OK了,弹出来的提示框中的e.Row.Cells[1].Text这一部分乱码:
 
lbtn.Attributes.Add("onclick", "javascript:return confirm('你确认要删除:\"" + e.Row.Cells[1].Text + "\"吗?')");
怎样解决这个乱码吖?
[/Quote]
e.Row.Cells[1].Text在你要取值的这个模板列放一个Label
然后:
LinkButton lbtn = e.Row.FindControls("delete") as LinkButton;
Label lblmessage = e.Row.FindControls("message") as LinkButton;
lbtn.Attributes.Add("onclick","javascript:return confirm('您确定要删除:"+lblmessage.Text+"吗?')");
comzheng 2009-12-14
  • 打赏
  • 举报
回复
你这个是lbtn是在控件里面吧。你何不直接在前台写弹出方法。为什么要在后台啊!
comzheng 2009-12-14
  • 打赏
  • 举报
回复
能发下你弹出的那内容看下么。
zqtoo 2009-12-14
  • 打赏
  • 举报
回复
"\"吗?')");

这儿是不是 少了点什么?
g497772921 2009-12-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 comzheng 的回复:]
引用 7 楼 g497772921 的回复:
引用 6 楼 breezekey 的回复:
LinkButton lbtn =  e.Row.FindControl("delete") as LinkButton;
lbtn.Attributes.Add("onclikc","......");


OK了,弹出来的提示框中的e.Row.Cells[1].Text这一部分乱码:
 
lbtn.Attributes.Add("onclick", "javascript:return confirm('你确认要删除:\"" + e.Row.Cells[1].Text + "\"吗?')");
怎样解决这个乱码吖?

编下码看。用UTF8
lbtn.Attributes.Add("onclick", "javascript:return confirm('你确认要删除:\"" + System.Web.HttpUtility.UrlEncode(e.Row.Cells[1].Text, System.Text.Encoding.UTF8) + "\"吗?')");


[/Quote]

不好意思,写错了,那个应该不是乱码,e.Row.Cells[1].Text里面有空格的就变成"+"号了,还有在字符串前面显示一个很特别的符号!
comzheng 2009-12-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 g497772921 的回复:]
引用 6 楼 breezekey 的回复:
LinkButton lbtn =  e.Row.FindControl("delete") as LinkButton;
lbtn.Attributes.Add("onclikc","......");


OK了,弹出来的提示框中的e.Row.Cells[1].Text这一部分乱码:
 
lbtn.Attributes.Add("onclick", "javascript:return confirm('你确认要删除:\"" + e.Row.Cells[1].Text + "\"吗?')");
怎样解决这个乱码吖?
[/Quote]
编下码看。用UTF8
lbtn.Attributes.Add("onclick", "javascript:return confirm('你确认要删除:\"" + System.Web.HttpUtility.UrlEncode(e.Row.Cells[1].Text, System.Text.Encoding.UTF8) + "\"吗?')");

missxiaobai813 2009-12-14
  • 打赏
  • 举报
回复
LinkButton lbtn = (LinkButton )e.Row.Cells[3].FindControl("delete");
lbtn.Attributes.Add("onclick","javascript:return confirm('你确认要删除:\"" + e.Row.Cells[1].Text + "\"吗?')");
javascript里面我没细看,不好用的话自己检查下再试。
g497772921 2009-12-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 breezekey 的回复:]
LinkButton lbtn =  e.Row.FindControl("delete") as LinkButton;
lbtn.Attributes.Add("onclikc","......");
[/Quote]

OK了,弹出来的提示框中的e.Row.Cells[1].Text这一部分乱码:

lbtn.Attributes.Add("onclick", "javascript:return confirm('你确认要删除:\"" + e.Row.Cells[1].Text + "\"吗?')");
怎样解决这个乱码吖?
breezekey 2009-12-14
  • 打赏
  • 举报
回复
LinkButton lbtn = e.Row.FindControl("delete") as LinkButton;
lbtn.Attributes.Add("onclikc","......");
g497772921 2009-12-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 j_x_m 的回复:]
((LinkButton)e.Row.FindControls("delete")).Attributes.Add("onclick", "javascript:return confirm('你确认要删除:\"" +((控件)e.Row.FindControls("控件名")). Text + "\"吗?')");

你试一下这个可不可以.
[/Quote]

不可能是这样的,
J_X_M 2009-12-14
  • 打赏
  • 举报
回复
((LinkButton)e.Row.FindControls("delete")).Attributes.Add("onclick", "javascript:return confirm('你确认要删除:\"" +((控件)e.Row.FindControls("控件名")). Text + "\"吗?')");

你试一下这个可不可以.
g497772921 2009-12-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sandy945 的回复:]
((LinkButton)e.Row.Cells[3].Controls[0])


Cells[3]


这个3 写的不对, 你看看 是不是 4 or 2

就是找到 LinkButton 所在的列

[/Quote]

不是这个问题:linkButton 就在Cells[3]这一列,原先是可以运行的,我把它改为模版列就不行了!
原先是CommandField这样是能正常运行:
<asp:CommandField CancelText="Cancel" DeleteText="Delete" HeaderText="Add"
ShowDeleteButton="True" ShowHeader="True" >

后来改了之后就变成LinkButton这样:就不能运行了,
<asp:LinkButton ID="delete" runat="server" CausesValidation="False" CommandName="Delete"
Text="Delete"> </asp:LinkButton>



提示的错误是:

System.InvalidCastException: 无法将类型为“System.Web.UI.LiteralControl”的对象强制转换为类型“System.Web.UI.WebControls.LinkButton”。


就是后台的这一行出错:

((LinkButton)e.Row.Cells[3].Controls[0]).Attributes.Add("onclick", "javascript:return confirm('你确认要删除:\"" + e.Row.Cells[1].Text + "\"吗?')");
J_X_M 2009-12-14
  • 打赏
  • 举报
回复
上面这位说得没错,是这样.
加载更多回复(2)

62,046

社区成员

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

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

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

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