首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 动态加载控件后如何获得所加载控件的id [已结贴,结贴人:ab83328523]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ab83328523
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-08-19 10:17:45 楼主
        我在页面上放了两个button,点击btn1动态加载一个控件mycontrol,mycontrol中有一个textbox,当控件加载后,我在textbox中输入文字后,点击btn2,希望文字在页面中显示,但是我输入文字后,点击btn2,页面只有两个btn,没有文字,mycontrol也没了。前台代码

    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页 </title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:PlaceHolder ID="PlaceHolder1" runat="server"> </asp:PlaceHolder>
            <asp:Button ID="btn1" runat="server" OnClick="btn1_Click" Text="Button" />
            <asp:Button ID="btn2" runat="server" Text="Button" /> </div>
        </form>
    </body>
    </html>


    后台代码
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;

    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
             
        }
        protected void btn1_Click(object sender, EventArgs e)
        {
          UserControl user= (UserControl)this.Page.LoadControl ("mycontrol.ascx");
          this.PlaceHolder1.Controls.Add(user);
          user.ID = "ni";
          TextBox tr1 = (TextBox)user.FindControl("TextBox1");
          tr1.ID = "wo";

        }
        protected void btn2_Click(object sender, EventArgs e)
        {

            TextBox tb = (TextBox)this.FindControl("ni_wo");
            string asdf = tb.Text ;       
            Response.Write(asdf);
          // Response.Write(tb.txt);
        }
    }

    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xuexiziji
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 10:40:561楼 得分:5
    btn2点击,页面重载了,所以没了,是不是这个原因。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ZengHD
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 10:49:382楼 得分:5
    把UserControl user= (UserControl)this.Page.LoadControl ("mycontrol.ascx");
          this.PlaceHolder1.Controls.Add(user);
          user.ID = "ni";
          TextBox tr1 = (TextBox)user.FindControl("TextBox1");
          tr1.ID = "wo";
    放到Page_Load里
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ab83328523
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 10:51:003楼 得分:0
      可能是吧 ,如何让页面不重载,我是新手,请指教
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tidusff12
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 10:58:244楼 得分:5

    protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
              //这里写就不会重新加载了
            }
        }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • DemonAngle
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 10:59:425楼 得分:0
    引用 2 楼 ZengHD 的回复:
    把UserControl user= (UserControl)this.Page.LoadControl ("mycontrol.ascx");
          this.PlaceHolder1.Controls.Add(user);
          user.ID = "ni";
          TextBox tr1 = (TextBox)user.FindControl("TextBox1");
          tr1.ID = "wo";
    放到Page_Load里
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Ken920454
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 11:01:356楼 得分:0
    up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ab83328523
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 11:01:457楼 得分:0
      其实我要的就是一个事件激发动态加载控件,就算是按2楼的说法,页面也没有任何的输出啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yuchangmao
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 11:07:148楼 得分:5
    先了解一下用户控件加载的顺序和机制。你在btn2事件中并未加载mycontrol
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ab83328523
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 11:22:269楼 得分:0
      是啊 ,但是我要的就是点击btn1加载mycontrol后 ,点击btn2后能在页面输出在mycontrol中textbox中输入的文字。能实现这个效果吗,我希望mycontrol能固定在页面上。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tonyze
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 11:24:0310楼 得分:5
    IsPostBack
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ab83328523
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 11:30:5311楼 得分:0
      加在哪啊 ,我试了都不行啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • locoasta
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 11:31:2512楼 得分:10
    你把 mycontrol 放在pagelaod 激发了 但是全部隐藏好了 然后再 btn1 的时候在显示出来 这样可以不
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • caicai_45
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 12:06:5713楼 得分:15
    给你个思路吧,做这个东西比较烦,要什么清楚页面生命周期。

    1 实现一个HashTable,里面KEY放的是控件的ID,value可以不放东西。
    2 每次点击增加一个控件的时候,同时在上面定义好的HashTable里面,把这条记录加入。同时需要把这个HashTable放到ViewState里面。
    3 每次PageLoad的时候,都先从ViewState里面,把刚刚生成的控件,在重新生成一遍,和2类似。


    只有这样了,你才能保证控件每次点击的时候,不丢失。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ab83328523
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 13:28:5614楼 得分:0
    恩 ,是个好办法,谢谢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fmsgx
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 13:59:0115楼 得分:0
    protected void btn2_Click(object sender, EventArgs e)
        {

            TextBox tb = (TextBox)this.Page.FindControl("PlaceHolder1").FindControl("ni_wo");
            string asdf = tb.Text ;       
            Response.Write(asdf);
          // Response.Write(tb.txt);
        }
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved