现在在用asp做一个rss阅读器,前台的按钮会调用后台的事件函数更改数据库里的字段。 <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
     <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always"> 
     <ContentTemplate>        
     <table style="width:100%;">
            <tr>
                <td class="style1Transparent" valign="top"> <%showTitle(); %></td>  
                <td>
                   <% showRss();%></td>
             </tr>    
     </table>
</ContentTemplate>
   </asp:UpdatePanel> contenttemplate里面是一个表格表格左边显示标题 邮编显示内容 都是后台动态产生的。
为什么点击按钮后不刷新呢?
public void showRss()
        {
            ArrayList channel=new ArrayList();  //记录频道的动态数组
            string strConnection = "server=localhost;database=rssdata;uid=sa;pwd=''";    //链接数据库的参数字符
            SqlConnection sqlcon = new SqlConnection(strConnection);    //建立连接
            sqlcon.Open();   //打开数据库
            //输出所有新闻
           // Response.Write("<asp:UpdatePanel ID='UpdatePanel1' runat='server'>");
           // Response.Write(" <ContentTemplate>");
            Response.Write("<DIV id='Rss_cnt'class='content'>");
            Response.Write("<span>");
            SqlCommand adsa = new SqlCommand("select * from rss_table", sqlcon);    //建立一个sqlcommand对象,要求输出相应的内容
            SqlDataReader rdr = adsa.ExecuteReader();
            while (rdr.Read())
            {
                Response.Write("<div class='back'>");
                if (rdr.GetValue(8).Equals(0))
                    Response.Write("<input class='unreadbtn' type='image' width='20px' hight='20px' title='标记为已读' src='pic/unread.png' runat='server' value='" + rdr.GetValue(2).ToString() + "' onclick='changeread(this)'  />&nbsp;");
                else
                    Response.Write("<input class='readbtn' type='image' width='20px' hight='20px' title='标记为未读' src='pic/read.png' runat='server' value='" + rdr.GetValue(2).ToString() + "' onclick='changeread(this)'  />&nbsp;");
                if (rdr.GetValue(7).Equals(0))
                    Response.Write("<input class='unlikebtn' type='image' width='20px' hight='20px' title='加入喜欢' src='pic/unlike.png' runat='server' value='"+rdr.GetValue(2).ToString()+"' onclick='changelike(this)'  />&nbsp;");
                else
                    Response.Write("<input class='likebtn' type='image' width='20px' hight='20px' title='取消喜欢' src='pic/like.png' runat='server' value='" + rdr.GetValue(2).ToString() + "' onclick='changelike(this)'  />&nbsp;");
                Response.Write("<a href='" + rdr.GetValue(3) + "' target='_blank'>" + rdr.GetValue(2) + "</a><br/>");   //输出到客户端
                Response.Write(rdr.GetValue(5) + "<br/>");
                Response.Write(rdr.GetValue(4) + "<br/>");
                Response.Write("</div><br/>");
            }
            Response.Write("</span>");
            rdr.Close();
       
            //输出最爱新闻
            Response.Write("<span>");
            adsa = new SqlCommand("select * from rss_table where likeornot=1", sqlcon);    //建立一个sqlcommand对象,要求输出相应的内容
            rdr = adsa.ExecuteReader();
            while (rdr.Read())
            {
                Response.Write("<div class='back'>");
                if (rdr.GetValue(8).Equals(0))
                    Response.Write("<input class='unreadbtn' type='image' width='20px' hight='20px' title='标记为已读' src='pic/unread.png' runat='server' value='" + rdr.GetValue(2).ToString() + "' onclick='changeread(this)'  />&nbsp;");
                else
                    Response.Write("<input class='readbtn' type='image' width='20px' hight='20px' title='标记为未读' src='pic/read.png' runat='server' value='" + rdr.GetValue(2).ToString() + "' onclick='changeread(this)'  />&nbsp;");
                if (rdr.GetValue(7).Equals(0))
                    Response.Write("<input class='unlikebtn' type='image' width='20px' hight='20px' title='加入喜欢' src='pic/unlike.png' runat='server' value='" + rdr.GetValue(2).ToString() + "' onclick='changelike(this)'  />&nbsp;");
                else
                    Response.Write("<input class='likebtn' type='image' width='20px' hight='20px' title='取消喜欢' src='pic/like.png' runat='server' value='" + rdr.GetValue(2).ToString() + "' onclick='changelike(this)'  />&nbsp;");
                Response.Write("<a href='" + rdr.GetValue(3) + "' target='_blank'>" + rdr.GetValue(2) + "</a><br/>");   //输出到客户端
                Response.Write(rdr.GetValue(5) + "<br/>");
                Response.Write(rdr.GetValue(4) + "<br/>");
                Response.Write("</div><br/>");
            }
            Response.Write("</span>");
            rdr.Close();           ………              Response.Write("</DIV>");
              //Response.Write(" </ContentTemplate>");
             // Response.Write("</asp:UpdatePanel> ");
             sqlcon.Close();
        }

解决方案 »

  1.   

    按钮在哪里,你需要一个<asp:Button ID="btnSubmit" runat="server" Text="提交" />这样的按钮,并且不能放在UpdatePanel这个里面
      

  2.   

    按钮是用respone.write动态产生的input标签.就是我图片中的那个心形if (rdr.GetValue(7).Equals(0))
                        Response.Write("<input class='unlikebtn' type='image' width='20px' hight='20px' title='加入喜欢' src='pic/unlike.png' runat='server' value='" + rdr.GetValue(2).ToString() + "' onclick='changelike(this)'  />&nbsp;");
                    else
                        Response.Write("<input class='likebtn' type='image' width='20px' hight='20px' title='取消喜欢' src='pic/like.png' runat='server' value='" + rdr.GetValue(2).ToString() + "' onclick='changelike(this)'  />&nbsp;");我看网上的例子按钮都是放在contenttemple里面的呀 
      

  3.   

    我怎么记得在ajax 下用不了 Response.Write()
      

  4.   

    你这段代码都有问题,因为runat="server"只相对服务器端才有用,你这样思路都错了,何况你即使正确,你contenttemple中也是无刷新的
      

  5.   


    我的新闻内容是服务器端从数据库里读出 然后用respone动态生成到前台的,然后点击按钮会引起数据库里面数据的变化,新闻内容这个div也会跟着变化<asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
         <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always"> 
         <ContentTemplate>        
         <table style="width:100%;">
                <tr>
                    <td class="style1Transparent" valign="top"> <%showTitle(); %></td>  
                    <td>
                       <% showRss();%></td>
                 </tr>    
         </table>
    </ContentTemplate>
       </asp:UpdatePanel> 我的理解是他会重新调用一遍showtitle和showrss,于是这两部分会得到更新。但是结果是不能用respone 然后也更新不了。我测试了一下 点击按钮是有调用到这两个函数的,但是为什么界面没有更新呢?