列与模版列的问题

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)改成什么呢?我是刚学的,不会吖!
...全文
118 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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)
简介: 1、多级目录,每个目录下面可以有更深一级目录,并出属于该目录的网站 管理:选择分类管理,添加需要的分类,或者选择下一级目录,同时可以选择删除(删)修改(修)制作(制)某一个目录 2、静态页面,所有目录页面均使用程序生成了html页,不用读取数据库,大大节省了服务器资源 管理:选择制作下属页面,系统会出搜索的类别,请选择需要生成的类别 3、目录模版,在数据库中存放了大量的页面模版,每一个目录都可以订制自己的网面 管理:选择模板管理,系统会出目前已经存在的模板,你可以修改,添加,删除,添加时请按照示例进行制作,建议先将数据库备份再修改 4、即时登陆网站,站长可以随时登陆自己的网站,但是登陆以后只能在他选定的目录所显示的页面中的“更多”网站页面中显示出来,只有在管理员审查并生成页面以后才能直接在目录页面看到 5、模糊查找, 6、布尔查找,支持and(*) or(|) not(-)等布尔表达式 例如:烟台*一百-新闻 或者:烟台 and 一百 not 新闻 如果只需要and连接,可以只输入 烟台 一百,这与 烟台*一百、烟台 and 一百 效果等同 搜索结果将会把相关关键词以特殊的颜色显示出来 7、常用关键词页面自动生成,用户输入查找的关键词都保存在数据库中,如果有相同的关键词则这些关键词数量累加,管理员管理的时候可以生成排名在头几位的关键词页面,也就是提前替用户把这些关键词提前搜索出来了,并且生成了静态的html页面,用户在搜索这些关键词时,就可以直接显示这些已经生成的页面,避免了大量的查询数据库,节省了服务器资源 管理:选择关键词管理,系统会出数据库中已经存在的可以生成的关键词,以及网友在使用这个搜索引擎时用的关键字(只选取排名头100个),管理员可以随意生成需要的关键词页面 8、网站顺序,在某个目录下的网站数目很多的时候,排在上面的网站被访问的几率比排在下面的网站几率要大得多,因此我又增加排名功能,管理员可以设定某个网站在该目录下的排名 9、单目录搜索,当用户在某个目录浏览的时候,可以选择在该目录下搜索和搜索全部目录,选择在该目录下搜索可以只搜索属于该目录以及该目录的子目录下的网站 10、静态页面在线生成,在管理界面可以在线生成所有目录下的页面以及关键词页面 11、二次搜索功能,当用户在搜索某个关键词以后,系统出了〉20个结果以后,就会出现二次搜索界面,用户可以选择在这些结果中再次搜索,比如要求结果必须不包含某个关键词或者必须再包含某个关键词 12、模版的在线修改,不同的页面模版有不同的规则 14、所有目录在线动态修改,自动更新以前的页面 15、动态生成网站首页(需要模版支持) 16、分类参照:指一个分类类目名分在一个上级类目下,而在另一个类目下作参照。以@作后缀的类目名。

62,248

社区成员

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

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

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

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