FineUI 官方论坛

标题: 【已解决】使用ContentPanel和LiteralControl控件,不会更新!? [打印本页]

作者: szjazz    时间: 2013-3-24 15:05
标题: 【已解决】使用ContentPanel和LiteralControl控件,不会更新!?
为了显示一些Html超文本内容,用代码生成内容,放在ContentPanel容器,借助LiteralControl控件来实现,首先页面初始化后生成 的内容,后来需要更新新的内容,借助Button事件来更新,但效果未能达到!代码如下:
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Exam.aspx.cs" Inherits="WebJazz.Exam" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head runat="server">
  4.     <title></title>
  5. </head>
  6. <body>
  7.     <form id="form1" runat="server">
  8.     <x:PageManager ID="PageManager1" runat="server" />
  9.     <x:ContentPanel ID="ContentPanel1" runat="server" BodyPadding="5px" ShowBorder="true"
  10.         ShowHeader="true" Title="ContentPanel">
  11.         <asp:Literal ID="lc" runat="server"></asp:Literal>
  12.     </x:ContentPanel>
  13.     <x:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click">
  14.     </x:Button>
  15.     </form>
  16. </body>
  17. </html>

复制代码
  1. using System;
  2. using System.Collections.Generic;

  3. using System.Web;
  4. using System.Web.UI;
  5. using System.Web.UI.WebControls;
  6. using System.Text;
  7. using FineUI;
  8. namespace WebJazz
  9. {
  10.     public partial class Exam : System.Web.UI.Page
  11.     {
  12.         int[] StatValue = new int[] { 100, 200 };

  13.         protected void Page_Init(object sender, EventArgs e)
  14.         {
  15.             FillStatCont(StatValue);
  16.         }

  17.         protected void FillStatCont(int[] StatValue)
  18.         {
  19.             LiteralControl lc = new LiteralControl();
  20.             lc.ID = "Stat";
  21.             StringBuilder htmlStr = new StringBuilder();
  22.             htmlStr.Append("<div class=article_col>");
  23.             htmlStr.Append("<div class=article_label style='width:40px'></div>");
  24.             htmlStr.Append("<div class=article_content>合计</div>");
  25.             htmlStr.Append("</div>");
  26.             for (int i = 0; i < StatValue.Length; i++)
  27.             {
  28.                 htmlStr.Append("<div class=article_col>");
  29.                 htmlStr.Append("<div class=article_content>" + StatValue[i] + "</div>");
  30.                 htmlStr.Append("</div>");
  31.             }
  32.             lc.Text = htmlStr.ToString();
  33.             ContentPanel1.Controls.Add(lc);

  34.         }

  35.         protected void Button1_Click(object sender, EventArgs e)
  36.         {
  37.             StatValue[0] = 400;
  38.             StatValue[1] = 600;
  39.             FillStatCont(StatValue);
  40.         }
  41.     }
  42. }
复制代码
本来想实现统计结果在Grid的下方,如下图:

[attach]1893[/attach]现贴出可测试的代码,请大师们帮助解决!


作者: 奋斗~    时间: 2013-3-24 23:59
ContentPanel 控件中加入【EnableAjax="false"】试下...
作者: szjazz    时间: 2013-3-25 00:46
奋斗~ 发表于 2013-3-24 23:59
ContentPanel 控件中加入【EnableAjax="false"】试下...

不管用哦,谢谢你!
作者: 奋斗~    时间: 2013-3-25 04:16
szjazz 发表于 2013-3-25 00:46
不管用哦,谢谢你!

不太可能啊,你放到【PageManager】试下...
作者: szjazz    时间: 2013-3-25 04:56
本帖最后由 szjazz 于 2013-3-25 05:02 编辑
奋斗~ 发表于 2013-3-25 04:16
不太可能啊,你放到【PageManager】试下...

嗯,在PageManager改了EnableAjax="False",第一次显示初始值
[attach]1900[/attach]
但第一次点击按钮后可能是多了一个控件,内容多了,但再多次点击按钮却不会再新增内容和控件了
[attach]1901[/attach]
将PageManager改了EnableAjax="False"会影响到别的控件的效果吗,FineUI本身就是Ajax的高级应用啊
不行,将页面EnableAjax="False",每有一个事件,都会页面重新刷新一下,而且有些控件的显示结果变乱了

作者: sanshi    时间: 2013-3-26 17:13
这个问题官方网站有示例啊:http://fineui.com/demo/#/demo/aspnet/aspnet_literal.aspx

因为asp Literal渲染出来的HTML节点没有外层容器,所以要自己写个Literal的外层容器。
  1. <x:PageManager ID="PageManager1" AjaxAspnetControls="Label1,Literal1,Literal2_Container" runat="server" />
  2.     <asp:Label ID="Label1" Text="Label1" runat="server"></asp:Label>
  3.     <br />
  4.     <asp:Literal ID="Literal1" Text="Literal1" runat="server"></asp:Literal>
  5.     <br />
  6.     <div id="Literal2_Container">
  7.         <asp:Literal ID="Literal2" Text="Literal2" runat="server"></asp:Literal>
  8.     </div>
  9.     <br />
  10.     <x:Button ID="Button1" runat="server" Text="更新上面几个文本值" OnClick="Button1_Click">
  11.     </x:Button>
  12.     <br />
  13.     注意:只有Label1和Literal2的值更新了。
复制代码

作者: 张海    时间: 2014-5-5 13:57
感谢三石!




欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4