今天碰到一个页面,Repeater的Itemcommand事件死活不响应,网上搜了一搜,问的人还真多,可能解决的很少,估计是各有各的原因。像其他人所说的什么事件没有注册啊,ispostback没有判断啊等等,通通都不属于我存在的问题。我当时很是奇怪,因为我弄了个测试页面,上面只有一个repeater,没有其他任何东西,这个repeater就能响应的好好的。所以问题还是出现在那个页面上。经过反复试验,终于有了一个惊人的发现:
原来,页面上包含一个用户控件head011,内容大致如下
<script language="javascript" type="textjavascript">
var domainroot="www.sina.com.cn"// 你的网站域名
function Gsitesearch(curobj){
curobj.q.value="site:"+domainroot+" "+curobj.qfront.value
}
</script>
<form action="http://www.google.com/search" method="get" onSubmit="Gsitesearch(this)">注意此处很关键
<br>
<table width="765" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="250"><img src="images/l001.gif" width="250" height="61"></td>
<td width="510" valign="bottom"><table width="0" border="0" align="right" cellpadding="0" cellspacing="0">
<tr>
<td>
<a href="index.aspx" class="ch007">首页</a> <a href="lxwm.aspx" class="ch007">|
联系我们</a> <a href="yqlj.aspx" class="ch007"></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table width="0" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><img src="images/l002.gif" width="768" height="29"></td>
</tr>
</table>
<table width="768" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="247" height="23" background="images/l003.gif"> </td>
<td width="307" background="images/l003.gif"><a href="gywm_gsjj.aspx"><img src="images/l019.gif" width="62" height="23" border="0"></a><a href="xw_lb.aspx"><img src="images/l020.gif" width="75" height="23" border="0"></a><a href="tzzgx_llwm.aspx"><img src="images/l021.gif" width="86" height="23" border="0"></a><a href="ywjs.aspx"><img src="images/l022.gif" width="60" height="23" border="0"></a></td>
<td width="64" background="images/l003.gif"><select name="select" size="1" class="table001">
<option selected>标题</option>
<option>内容</option>
<option>作者</option>
</select></td>
<p>
<td width="110" background="images/l003.gif"><input name="q" type="hidden"><input name="qfront" type="text" class="table002" value="搜索内容" size="20"></td>
<td width="40" background="images/l003.gif"><input type="submit" class="table003" value="go"></td>
</p>
</tr>
</table>
</form>
而出问题的页面大致如下:
<%@ Register TagPrefix="uc1" TagName="down02" Src="Controls/down02.ascx" %>
<%@ Register TagPrefix="uc1" TagName="left01" Src="Controls/left01.ascx" %>
<%@ Register TagPrefix="uc1" TagName="head01" Src="Controls/head01.ascx" %>
<%@ Register TagPrefix="uc1" TagName="meta01" Src="Controls/meta01.ascx" %>
<%@ Register TagPrefix="uc1" TagName="title01" Src="Controls/title01.ascx" %>
<%@ Page CodeBehind="xzym.aspx.cs" Language="c#" AutoEventWireup="false" Inherits="Exhibition.web.xzym" %>
<HTML>
<HEAD>
<uc1:meta01 id="meta011" runat="server"></uc1:meta01>
<uc1:title01 id="title011" runat="server"></uc1:title01>
<link href="ch.css" rel="stylesheet" type="text/css">
</HEAD>
<body topmargin="0">
<form id="Form1" runat="server" method="post">注意此处很关键
<uc1:head01 id="head011" runat="server"></uc1:head01>注意此处很关键
<table width="0" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><img src="images/l002.png" width="767" height="138"></td>
</tr>
</table>
<table width="767" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="190" valign="top" bgcolor="#f3f3f3">
<uc1:left01 id="left011" runat="server"></uc1:left01>
</td>
<td width="580" valign="top"><table width="100%" height="33" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="580" height="33" background="images/l034.gif"> <img src="images/l017.gif" width="10" height="11"><a href="index.aspx" class="ch003">首页></a><a href="#" class="ch008">
下载页面</a></td>
</tr>
</table>
<br>
<table width="90%" height="26" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="84%" background="../images/ch_l_063.gif" class="ch001"> <span class="ch003"><strong>资料下载
:</strong></span></td>
<td width="16%" background="../images/ch_l_063.gif" class="ch004">点击下载</td>
</tr>
</table>
<asp:Repeater id="Repeater1" runat="server">
<HeaderTemplate>
<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align="center" valign="top" background="../images/ch_l_066.gif">
</HeaderTemplate>
<ItemTemplate>
<table width="511" height="65" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="429" height="65" align="left" class="ch007"><%# DataBinder.Eval(Container, "DataItem.FileDownName")%>(<%# DataBinder.Eval(Container, "DataItem.FileSize")%>)</td>
<td width="82" align="center"><asp:ImageButton id="lbtn_download2" runat="server" ImageUrl ="../images/ch_l_067.gif" Width="35" Height ="28" BorderWidth ="0" CommandName ="download" CommandArgument ='<%# DataBinder.Eval(Container, "DataItem.FileID")%>'></asp:ImageButton><span class="ch005"><br />
Download</span></td>
</tr>
</table>
</ItemTemplate>
<AlternatingItemTemplate>
<table width="511" height="65" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="429" height="65" align="left" class="ch007"><%# DataBinder.Eval(Container, "DataItem.FileDownName")%>(<%# DataBinder.Eval(Container, "DataItem.FileSize")%>)</td>
<td width="82" align="center"><asp:ImageButton id="ibtn_download1" runat="server" ImageUrl ="../images/ch_l_068.gif" Width ="35" Height ="28" BorderWidth ="0" CommandName ="download" CommandArgument ='<%# DataBinder.Eval(Container, "DataItem.FileID")%>'></asp:ImageButton><span class="ch005"><br />
Download</span></td>
</tr>
</table>
</AlternatingItemTemplate>
<FooterTemplate>
</td>
</tr>
</table>
</FooterTemplate> </asp:Repeater>
<table width="0" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><img src="../images/dna01.gif" width="500" height="9"></td>
</tr>
</table>
<table width="0" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><img src="../images/ch_l_056.gif" width="550" height="10"></td>
</tr>
</table>
</td> </tr> </table>
<uc1:down02 id="down021" runat="server"></uc1:down02>
</form>
</body>
</HTML>
这样的两个分别都要提交的FROM的结构,存在问题,导致了Itemcommand的事件不能响应。我虽然找到了原因,但并不知道原理是什么,还请高手赐教,不胜感激。
所以针对我的这个页面的问题来说,就很好解决了,把页面改成如下的结构,问题就迎刃而解了:
<%@ Register TagPrefix="uc1" TagName="down02" Src="Controls/down02.ascx" %>
<%@ Register TagPrefix="uc1" TagName="left01" Src="Controls/left01.ascx" %>
<%@ Register TagPrefix="uc1" TagName="head01" Src="Controls/head01.ascx" %>
<%@ Register TagPrefix="uc1" TagName="meta01" Src="Controls/meta01.ascx" %>
<%@ Register TagPrefix="uc1" TagName="title01" Src="Controls/title01.ascx" %>
<%@ Page CodeBehind="xzym.aspx.cs" Language="c#" AutoEventWireup="false" Inherits="Exhibition.web.xzym" %>
<HTML>
<HEAD>
<uc1:meta01 id="meta011" runat="server"></uc1:meta01>
<uc1:title01 id="title011" runat="server"></uc1:title01>
<link href="ch.css" rel="stylesheet" type="text/css">
</HEAD>
<body topmargin="0">
<uc1:head01 id="head011" runat="server"></uc1:head01>注意此处很关键---------将这句话提到FORM的外面去
<form id="Form1" runat="server" method="post"> 注意此处很关键
<table width="0" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><img src="images/l002.png" width="767" height="138"></td>
</tr>
</table>
<table width="767" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="190" valign="top" bgcolor="#f3f3f3">
<uc1:left01 id="left011" runat="server"></uc1:left01>
</td>
<td width="580" valign="top"><table width="100%" height="33" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="580" height="33" background="images/l034.gif"> <img src="images/l017.gif" width="10" height="11"><a href="index.aspx" class="ch003">首页></a><a href="#" class="ch008">
下载页面</a></td>
</tr>
</table>
<br>
<table width="90%" height="26" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="84%" background="../images/ch_l_063.gif" class="ch001"> <span class="ch003"><strong>资料下载
:</strong></span></td>
<td width="16%" background="../images/ch_l_063.gif" class="ch004">点击下载</td>
</tr>
</table>
<asp:Repeater id="Repeater1" runat="server">
<HeaderTemplate>
<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align="center" valign="top" background="../images/ch_l_066.gif">
</HeaderTemplate>
<ItemTemplate>
<table width="511" height="65" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="429" height="65" align="left" class="ch007"><%# DataBinder.Eval(Container, "DataItem.FileDownName")%>(<%# DataBinder.Eval(Container, "DataItem.FileSize")%>)</td>
<td width="82" align="center"><asp:ImageButton id="lbtn_download2" runat="server" ImageUrl ="../images/ch_l_067.gif" Width="35" Height ="28" BorderWidth ="0" CommandName ="download" CommandArgument ='<%# DataBinder.Eval(Container, "DataItem.FileID")%>'></asp:ImageButton><span class="ch005"><br />
Download</span></td>
</tr>
</table>
</ItemTemplate>
<AlternatingItemTemplate>
<table width="511" height="65" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="429" height="65" align="left" class="ch007"><%# DataBinder.Eval(Container, "DataItem.FileDownName")%>(<%# DataBinder.Eval(Container, "DataItem.FileSize")%>)</td>
<td width="82" align="center"><asp:ImageButton id="ibtn_download1" runat="server" ImageUrl ="../images/ch_l_068.gif" Width ="35" Height ="28" BorderWidth ="0" CommandName ="download" CommandArgument ='<%# DataBinder.Eval(Container, "DataItem.FileID")%>'></asp:ImageButton><span class="ch005"><br />
Download</span></td>
</tr>
</table>
</AlternatingItemTemplate>
<FooterTemplate>
</td>
</tr>
</table>
</FooterTemplate> </asp:Repeater>
<table width="0" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><img src="../images/dna01.gif" width="500" height="9"></td>
</tr>
</table>
<table width="0" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><img src="../images/ch_l_056.gif" width="550" height="10"></td>
</tr>
</table>
</td> </tr> </table>
<uc1:down02 id="down021" runat="server"></uc1:down02>
</form>
</body>
</HTML>
我的问题是解决了。可我最终还是不知道,为什么将那个包含一个form的<uc1>提到页面Form标签的外面去,就能解决这个问题。换句话说,为什么<uc1>放到页面的Form标签的里面,就能造成itemcommand事件的不响应呢??盼望高手的解答。。。。。。
原来,页面上包含一个用户控件head011,内容大致如下












































而出问题的页面大致如下:



















































































这样的两个分别都要提交的FROM的结构,存在问题,导致了Itemcommand的事件不能响应。我虽然找到了原因,但并不知道原理是什么,还请高手赐教,不胜感激。
所以针对我的这个页面的问题来说,就很好解决了,把页面改成如下的结构,问题就迎刃而解了:



















































































我的问题是解决了。可我最终还是不知道,为什么将那个包含一个form的<uc1>提到页面Form标签的外面去,就能解决这个问题。换句话说,为什么<uc1>放到页面的Form标签的里面,就能造成itemcommand事件的不响应呢??盼望高手的解答。。。。。。