我想在前台通过 <%Response.Write(sb1.ToString()); %>这个来调用数据显示。
比如在A处,插入一个<%Response.Write(sb1.ToString()); %>
在B处插入一个<%Response.Write(sb2.ToString()); %>这样来在该显示的位置显示数据。现在遇到一个问题,我声明sb1的时候是这样写的,
 public StringBuilder sb1 = new StringBuilder();
方法是下面的
public void ad_Bind(int id, StringBuilder sb1)
        {
               ..................
                if (pictype == "swf")
                {
                }
                else
                {                    sb1.AppendFormat("<img src=\"{0}\" alt=\"{1}\" width=\" " + width + " px\" height=\" " + height + " px\" />", adpic, adtitel);
                    sb1.Append("</div>");
                }
            }
那我想实现想要的效果改怎么修改我的代码呢?大家帮帮忙,

解决方案 »

  1.   

    汗!!!
    我意思现在我只能声明了sb1,然后再调用。我想 通过这一段代码可以好多个sb1 ,sb2,sb3...都可以调用?改怎么修改代码
      

  2.   

    在pageLoad的时候调用该方法就是了protected void Page_Load(object sender, EventArgs e)
    {
        ad_Bind(1, sb1) ;
        ad_Bind(2, sb1) ;
        .....
    }
      

  3.   

    你前台的sb1,sb2已经说明不是一个对象了,申明多了就可以了。
      

  4.   

    在pageLoad的时候调用该方法就是了 
    C# code
    protected void Page_Load(object sender, EventArgs e)
    {
        ad_Bind(1, sb1) ;
        ad_Bind(2, sb1) ;
        .....
    }
      

  5.   

    <%Response.Write(ad_Bind(id,sb1)); %>
    public string ad_Bind(int id, StringBuilder sb)
    {
    .....
    return sb.toString();
    }
      

  6.   

    我现在解决方案就是这样,这样可以出来,但是可以简化嘛?不知道哪位前辈有没有更好的方法啊?
            public StringBuilder sb1 = new StringBuilder();
            public StringBuilder sb2 = new StringBuilder();
            public StringBuilder sb3 = new StringBuilder();          ad_Bind(3,sb1);
              ad_Bind(4, sb2);
              ad_Bind(5, sb3);
      
      

  7.   

    我代码里面是这样的 (new BLL.BLL_Hers_100Advert()).ad_Bind(3,sb1);
    我不知道下面这种我怎么写?
    <%Response.Write(ad_Bind(id,sb1)); %> 这样写不对啊
    <%Response.Write((BLL.BLL_Hers_100Advert()).ad_Bind(id,sb1)); %> 
      

  8.   

    而且<%Response.Write(ad_Bind(id,sb1)); %>的写法我试了也是不对的
      

  9.   

    我觉得你可以换一种方法,在需要显示数据的地方放置 asp:Literal 控件,然后在后台直接对 Literal 控件赋值即可,如 ltXXX.Text = "你的数据"。一个页面有太多的全局变量很容易混乱。
      

  10.   

    封装一个uc不就得了?  private stringbuilder _sb1;
      public stringbuilder sb1{
       get { return _sb1;}
       set { _sb1=value;}
      }
       private stringbuilder _sb2;
       public stringbuilder sb2{
        get { return _sb2;}
        set { _sb2=value;}
      }
      private string _pty;
      //类型
      public string pty{
       get {return _pty;}
       set {_pty=value;}
     }
    //绑定[本uc绑定],也可以在aspx绑定
    private void rwBind(){
      if(!string.isnullorempty(pty))
      {
        //判断不同的pty查询不同值
         sb1.append(sql....);
         sb2.append(sql...);//输出自己定义
      }
    }uc page_load:
    if(!isposeback){rwBind();}
    //调用
    demo.aspx
    直接把这控件拖到对应地方如: <uc1:demo id="test" pty="swf" runat="server"/>//.....等