2008年4月17日

saucer(思归)解决的关于:页面A.aspx 动态载入用户自定义控件a.ascx,但a.ascx中的按钮提交后,不执行按钮的事件,而是直接刷新页面

还没解决啊?象我前面说的,你需要记住你目前的控件,然后在Page_Load或以前事件里重新Load,下面是个简单的例子,试着在文本框里输入b.ascx或c.ascx    
   
  1.   TestA.ascx:  
   
  <%@   Register   TagPrefix="uc"   TagName="MyControl"   Src="A.ascx"   %>  
  <form   runat="server">  
  <uc:MyControl   id="mc"   runat="server"/>  
  <hr>  
 <asp:Panel   id="ContentPane"   runat="server"   />  
  <asp:Button   id="btn"   runat="server"   Text="Refresh"   />  
  </form>  
   
  2.   a.ascx:  
   
  <asp:TextBox   id="tb1"   runat="server"   />  
  <asp:LinkButton   id="LinkButton1"   runat="server"   Text="Load"   OnClick="LinkButton1_Click"/>  
  <script   language="C#"   runat="server">  
  private   void   LinkButton1_Click(object   sender,   System.EventArgs   e)  
  {  
      string   s   =   tb1.Text.Trim();  
      if   (!s.Equals(String.Empty))  
      LoadUserControl(s);  
  }  
   
   
  string   LoadedControl  
  {  
      get  
      {  
  object   o   =   ViewState["LoadedControl"];  
  if   (o   ==   null)  
  return   "";  
  else  
  return   (string)ViewState["LoadedControl"];  
      }  
      set  
      {  
  ViewState["LoadedControl"]   =   value;  
      }  
  }  
   
  int   LoadedControlID  
  {  
      get  
      {  
  object   o   =   ViewState["LoadedControlID"];  
  if   (o   ==   null)  
  return   0;  
  else  
  return   (int)ViewState["LoadedControlID"];  
      }  
      set  
      {  
  ViewState["LoadedControlID"]   =   value;  
      }  
  }  
   
  void   LoadUserControl(string   strPathName)  
  {  
      if   (strPathName.Equals(String.Empty))  
  return;  
   
      Control   parent   =   Page.FindControl("ContentPane");  
   
      if   (LoadedControl   !=   strPathName)  
      {  
  if   (parent.Controls.Count   >   0)  
  parent.Controls.Clear();  
   
      LoadedControlID++;  
      }  
   
      LoadedControl   =   strPathName;  
   
      Control   c   =   LoadControl(strPathName);  
   
      if   (c   !=   null)  
      {  
      c.ID   =   "ID"   +     LoadedControlID.ToString()   ;  
      parent.Controls.Add(c);  
      }  
  }  
   
  void   Page_Load(Object   sender,   EventArgs   e)  
  {  
    if   (!LoadedControl.Equals(String.Empty))  
  LoadUserControl(LoadedControl);  
  }  
   
  </script>  
   
  3.   b.ascx:  
  b.ascx:   <%=DateTime.Now%>  
  <asp:Button   id="btn"   runat="server"   Text="Button   in   B.ascx"   OnClick="Button1_Click"   />  
  <script   language="C#"   runat="server">  
  private   void   Button1_Click(object   sender,   System.EventArgs   e)  
  {  
      Page.Response.Write("BUtton   in   B   is   Clicked   at   "   +   DateTime.Now.ToString());  
  }  
  </script>  
   
  4.   c.ascx:  
  c.ascx:   <%=DateTime.Now%>  
   
  <asp:Button   id="btn"   runat="server"   Text="Button   in   C.ascx"   OnClick="Button1_Click"   />  
  <script   language="C#"   runat="server">  
  private   void   Button1_Click(object   sender,   System.EventArgs   e)  
  {  
      Page.Response.Write("BUtton   in   C   is   Clicked   at   "   +   DateTime.Now.ToString());  
  }  
  </script>

posted @ 2008-04-17 15:00 virus 阅读(231) | 评论 (0)编辑

MDI窗体,子窗体在父窗体中最大化,如果子窗体已经打开则显示,不重复打开窗体

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication4
{
    
public partial class frmMain : Form
    
{
        
public frmMain()
        
{
            InitializeComponent();
        }


        
private void 登录ToolStripMenuItem_Click(object sender, EventArgs e)
        
{
            
foreach (Form form in Application.OpenForms)
            
{
                
if (form.Name == "frmLogin")
                
{
                    form.Activate();
                    form.WindowState 
= FormWindowState.Maximized;
                    
return;
                }

            }


            frmLogin login 
= new frmLogin();

            login.MdiParent 
= this;
            login.WindowState 
= FormWindowState.Maximized;
            login.Show();
        }


        
private void 日志ToolStripMenuItem_Click(object sender, EventArgs e)
        
{
            
foreach (Form form in Application.OpenForms)
            
{
                
if (form.Text == "frmLogInfo")
                
{
                    form.Activate();
                    
return;
                }

            }


            frmLogInfo log 
= new frmLogInfo();
            log.MdiParent 
= this;
            log.WindowState 
= FormWindowState.Maximized;
            log.Show();
        }


        
private void frmMain_Load(object sender, EventArgs e)
        
{
            frmLogin login 
= new frmLogin();
            login.WindowState 
= FormWindowState.Maximized;
            login.MdiParent 
= this;
            login.Show();
        }


    }


}

MDI窗体,子窗体在父窗体中最大化,如果子窗体已经打开则显示,不重复打开窗体,当然可以使用单件模式来实现或者使用多线程里面的互斥体技术。
互斥体技术见我的另一篇博客,地址如下:
http://www.cnblogs.com/virusswb/archive/2008/03/26/1122480.html


posted @ 2008-04-17 13:11 virus 阅读(641) | 评论 (0)编辑

<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

导航

统计

公告

大家快乐就好,可不要因为工作累坏身体啊,身体是工作的本钱啊!
任何一个傻瓜都能写出计算机可以理解的程序,只有写出人类容易理解的程序才是优秀的程序员。
我的MSN:jorden008@hotmail.com

与我联系

搜索

 

常用链接

留言簿(11)

我参与的团队

我的标签

随笔分类(142)

随笔档案(160)

文章分类(27)

收藏夹(2)

.NET 2.0 Dispose

.NET 2.0 Socket

.NET WinForm控件开发

.NET 加密解密

.NET 序列化

.NET 自定义异常

.NET安装部署

.NET技巧

.NET开源项目

.NET学习资源

《阿一web标准学堂》

ACM题库

ActiveX插件

ASP.NET 2.0

ASP.NET 2.0 Cache

ASP.NET 2.0 GridView

ASP.NET 2.0的用户密码加密(注册登录)

ASP.NET 3.5

ASP.NET AJAX

ASP.NET LINQ

ASP.NET MVC

ASP.NET Repeater

ASP.NET ViewState

ASP.NET Webservice

c# 3.0

c# Dllimport c++

c# ORM

c# WndProc

c# 面向接口设计

c#+winform自动升级

c#操作数据库

c#插件编程

c#事件委托

Castle

eclipse社区

Enterprise Library

ExtJS

j2ee struts2

java se6帮助

java 相关

javascript

java社区

MSN机器人开发

myeclipse6+hibernate

MySql

NHibernate

ObjectDataSource

OR-Mapping

Petshop 4.0

SharePoint2007

SharpDevelop

SQL Server 2005

TDD

VMWare

web.config

WEB控件开发

windows service

Windows Workflow

WinForm DataGridView技巧

WMI编程

XML

常用正则表达式

创业信息

弹出窗口

飞信

分词算法

国内牛人