模態窗體選擇文本控件
	
		
		系統
		
		2124 0
	
	  
  
    模態窗體選擇文本控件
  
  
    經常使用摸態窗體,總是需要重復編寫javascript腳本.所以封裝了這個控件,這個控件使用的是aspnet2.0的API.所以用在1.1上的需要自己修改代碼.
    
    
  
  
    
    
    
      控件代碼
    
    
      
      <!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
      
      
        using
      
      
        System;
        
        
      
      
        using
      
      
        System.ComponentModel;
        
        
      
      
        using
      
      
        System.Text;
        
        
      
      
        using
      
      
        System.Web.UI;
        
        
      
      
        using
      
      
        System.Web.UI.HtmlControls;
        
        
      
      
        using
      
      
        System.Web.UI.WebControls;
        
        
        
        
      
      
        namespace
      
      
        DotnetClubPortal.WebControls
        
        
        
      
      
        
      
      
        
          {
          
          
          
        
        
          /**/
        
        
          
            ///
          
          
          
          
            <summary>
          
          
            
            
          
          
            ///
          
          
            用戶選擇控件
            
            
          
          
            ///
          
          
          
          
            </summary>
          
          
          
        
        
        
        
          [DefaultProperty(
        
        
          "
        
        
          Text
        
        
          "
        
        
          ),
          
          
          ToolboxData(
        
        
          "
        
        
          <{0}:SelectObjectrunat=server></{0}:SelectObject>
        
        
          "
        
        
          )]
          
          
        
        
          public
        
        
        
        
          class
        
        
          SelectObject:,INamingContainer
          
          
          
        
        
          
        
        
          
            {
            
            
          
          
            protected
          
          
            System.Web.UI.HtmlControls.HtmlInputHiddenhiddenObjectId;
            
            
          
          
            protected
          
          
            System.Web.UI.WebControls.TextBoxtxtObjectName;
            
            
          
          
            protected
          
          
            System.Web.UI.WebControls.Buttonbutton;
            
            
            
            
            
            
          
          
            private
          
          
            HtmlTableuiTable;
            
            
            
            
          
          
            public
          
          
            SelectObject()
            
            
            
          
          
            
          
          
            
              {
              
              
              txtObjectName
            
            
              =
            
            
            
            
              new
            
            
              Textbox();
              
              
              hiddenObjectId
            
            
              =
            
            
            
            
              new
            
            
              HtmlInputHidden();
              
              
              }
            
          
          
            
            
            
            
            
          
          
            /**/
          
          
            
              ///
            
            
            
            
              <summary>
            
            
              
              
            
            
              ///
            
            
              ID,ID中間使用","分隔
              
              
            
            
              ///
            
            
            
            
              </summary>
            
            
            
          
          
          
          
            [Browsable(
          
          
            false
          
          
            ),Category(
          
          
            "
          
          
            設置
          
          
            "
          
          
            ),Description(
          
          
            "
          
          
            取得的對象值,中間使用','分隔
          
          
            "
          
          
            ),DefaultValue(
          
          
            ""
          
          
            )]
            
            
          
          
            public
          
          
          
          
            string
          
          
            ObjectId
            
            
            
          
          
            
          
          
            
              {
              
              
            
            
              get
            
            
              
              
              
            
            
              
            
            
              
                {
                
                
              
              
                return
              
              
                hiddenObjectId.Value;
                
                
                }
              
            
            
              
              
            
            
              set
            
            
              
              
              
            
            
              
            
            
              
                {
                
                
                hiddenObjectId.Value
              
              
                =
              
              
                value.ToString();
                
                
                }
              
            
            
              
              
              }
            
          
          
            
            
            
            
            
          
          
            /**/
          
          
            
              ///
            
            
            
            
              <summary>
            
            
              
              
            
            
              ///
            
            
              名稱,中間使用","分隔
              
              
            
            
              ///
            
            
            
            
              </summary>
            
            
            
          
          
          
          
            [Browsable(
          
          
            false
          
          
            ),Category(
          
          
            "
          
          
            設置
          
          
            "
          
          
            ),Description(
          
          
            "
          
          
            對象名稱,中間使用','分隔
          
          
            "
          
          
            ),DefaultValue(
          
          
            ""
          
          
            )]
            
            
          
          
            public
          
          
          
          
            string
          
          
            ObjectName
            
            
            
          
          
            
          
          
            
              {
              
              
            
            
              get
            
            
              
              
              
            
            
              
            
            
              
                {
                
                
              
              
                return
              
              
                txtObjectName.Text;
                
                
                }
              
            
            
              
              
            
            
              set
            
            
              
              
              
            
            
              
            
            
              
                {
                
                
              
              
                this
              
              
                .txtObjectName.Text
              
              
                =
              
              
                value.ToString();
                
                
                }
              
            
            
              
              
              }
            
          
          
            
            
            
            
            [Category(
          
          
            "
          
          
            設置
          
          
            "
          
          
            ),Description(
          
          
            "
          
          
            選擇頁面路徑
          
          
            "
          
          
            ),Browsable(
          
          
            true
          
          
            ),NotifyParentProperty(
          
          
            true
          
          
            )]
            
            
          
          
            public
          
          
          
          
            string
          
          
            PageUrl
            
            
            
          
          
            
          
          
            
              {
              
              
            
            
              get
            
            
              
              
              
            
            
              
            
            
              
                {
                
                
              
              
                object
              
              
                obj
              
              
                =
              
              
                ViewState[
              
              
                "
              
              
                PageUrl
              
              
                "
              
              
                ];
                
                
              
              
                return
              
              
                (obj
              
              
                ==
              
              
                null
              
              
                )
              
              
                ?
              
              
                string
              
              
                .Empty:obj.ToString();
                
                
                }
              
            
            
              
              
            
            
              set
            
            
              
              
              
            
            
              
            
            
              
                {
                
                
                ViewState[
              
              
                "
              
              
                PageUrl
              
              
                "
              
              
                ]
              
              
                =
              
              
                value;
                
                
                }
              
            
            
              
              
              }
            
          
          
            
            
            
            
            
          
          
            /**/
          
          
            
              ///
            
            
            
            
              <summary>
            
            
              
              
            
            
              ///
            
            
              編輯框是否可見
              
              
            
            
              ///
            
            
            
            
              </summary>
            
            
            
          
          
          
          
            [Category(
          
          
            "
          
          
            設置
          
          
            "
          
          
            ),Description(
          
          
            "
          
          
            編輯框是否可見
          
          
            "
          
          
            ),Browsable(
          
          
            true
          
          
            ),DefaultValue(
          
          
            true
          
          
            )]
            
            
          
          
            public
          
          
          
          
            bool
          
          
            IsVisable
            
            
            
          
          
            
          
          
            
              {
              
              
            
            
              get
            
            
              
              
              
            
            
              
            
            
              
                {
                
                
              
              
                object
              
              
                obj
              
              
                =
              
              
                ViewState[
              
              
                "
              
              
                Visable
              
              
                "
              
              
                ];
                
                
              
              
                return
              
              
                (obj
              
              
                ==
              
              
                null
              
              
                )
              
              
                ?
              
              
                false
              
              
                :
              
              
                bool
              
              
                .Parse(obj.ToString());
                
                
                }
              
            
            
              
              
            
            
              set
            
            
              
              
              
            
            
              
            
            
              
                {
                
                
                ViewState[
              
              
                "
              
              
                Visable
              
              
                "
              
              
                ]
              
              
                =
              
              
                value;
                
                
                }
              
            
            
              
              
              }
            
          
          
            
            
            
            
          
          
            protected
          
          
          
          
            override
          
          
          
          
            void
          
          
            Render(HtmlTextWriteroutput)
            
            
            
          
          
            
          
          
            
              {
              
              
            
            
              base
            
            
              .Render(output);
              
              
              Control[]CtrlArray;
              
              
              CtrlArray
            
            
              =
            
            
            
            
              new
            
            
              Control[
            
            
              3
            
            
              ];
              
              
              CtrlArray[
            
            
              0
            
            
              ]
            
            
              =
            
            
            
            
              this
            
            
              .hiddenObjectId;
              
              
              CtrlArray[
            
            
              1
            
            
              ]
            
            
              =
            
            
            
            
              this
            
            
              .txtObjectName;
              
              
              CtrlArray[
            
            
              2
            
            
              ]
            
            
              =
            
            
            
            
              this
            
            
              .button;
              
              
              CreateTabeRow(CtrlArray);
              
              
              }
            
          
          
            
            
            
            
            
            
            
            
            
          
          
            /**/
          
          
            
              ///
            
            
            
            
              <summary>
            
            
              
              
            
            
              ///
            
            
              創建行
              
              
            
            
              ///
            
            
            
            
              </summary>
            
            
              
              
            
            
              ///
            
            
            
            
              <paramname="Obj">
            
            
              行中包含的控件
            
            
              </param>
            
            
            
          
          
          
          
          
          
            private
          
          
          
          
            void
          
          
            CreateTabeRow(Control[]Obj)
            
            
            
          
          
            
          
          
            
              {
              
              
              HtmlTableRowtr
            
            
              =
            
            
            
            
              new
            
            
              HtmlTableRow();
              
              
              HtmlTableCelltd
            
            
              =
            
            
            
            
              new
            
            
              HtmlTableCell();
              
              
            
            
              foreach
            
            
              (Controlc
            
            
              in
            
            
              Obj)
              
              
              
            
            
              
            
            
              
                {
                
                
              
              
                if
              
              
                (c
              
              
                !=
              
              
              
              
                null
              
              
                )
                
                
                
              
              
                
              
              
                
                  {
                  
                  
                  td.Controls.Add(c);
                  
                  
                  }
                
              
              
                
                
                
                
                }
              
            
            
              
              
              tr.Cells.Add(td);
              
              
              uiTable.Rows.Add(tr);
              
              
              }
            
          
          
            
            
            
            
          
          
            protected
          
          
          
          
            override
          
          
          
          
            void
          
          
            OnPreRender(EventArgse)
            
            
            
          
          
            
          
          
            
              {
              
              
              RegisterClientScriptBlockJavaScript();
              
              
            
            
              base
            
            
              .OnPreRender(e);
              
              
              }
            
          
          
            
            
            
            
            
          
          
            發出客戶端腳本RegisterClientScriptBlockJavaScript()
          
          
            
              #region
            
            
              發出客戶端腳本RegisterClientScriptBlockJavaScript()
            
            
              
              
            
            
              private
            
            
            
            
              void
            
            
              RegisterClientScriptBlockJavaScript()
              
              
              
            
            
              
            
            
              
                {
                
                
              
              
                //
              
              
                如果已經注冊了腳本則不再注冊
              
              
                
                
              
              
              
              
                if
              
              
                (Page.ClientScript.IsClientScriptBlockRegistered(
              
              
                "
              
              
                SetValue
              
              
                "
              
              
                ))
                
                
                
              
              
                
              
              
                
                  {
                  
                  
                
                
                  return
                
                
                  ;
                  
                  
                  }
                
              
              
                
                
              
              
                else
              
              
                
                
                
              
              
                
              
              
                
                  {
                  
                  
                  Page.ClientScript.RegisterClientScriptBlock(
                
                
                  this
                
                
                  .GetType(),
                
                
                  "
                
                
                  SetValue
                
                
                  "
                
                
                  ,SetValue().ToString());
                  
                  
                  }
                
              
              
                
                
                
                
                }
              
            
            
              
              
              
              
            
            
              public
            
            
              StringBuilderSetValue()
              
              
              
            
            
              
            
            
              
                {
                
                
                StringBuilderbuilder
              
              
                =
              
              
                new
              
              
                StringBuilder();
                
                
                builder.Append(
              
              
                "
              
              
                <scriptlanguage=\
              
              
                "
              
              
                javascript\
              
              
                "
              
              
                >\n
              
              
                "
              
              
                );
                
                
                builder.Append(
              
              
                "
              
              
                functionSetValue(Url,Name,Id){\n
              
              
                "
              
              
                );
                
                
                builder.Append(
              
              
                "
              
              
                varvDialog;\n
              
              
                "
              
              
                );
                
                
                builder.Append(
              
              
                "
              
              
                vDialog=window.showModalDialog(Url,window,\
              
              
                "
              
              
                dialogHeight:500px;dialogWidth:320px;status:no;resizable:yes;scroll:no;\
              
              
                "
              
              
                );\n
              
              
                "
              
              
                );
                
                
                builder.Append(
              
              
                "
              
              
                if(vDialog!=null){
              
              
                "
              
              
                );
                
                
                builder.Append(
              
              
                "
              
              
                if(document.getElementById(Name))document.getElementById(Name).value=vDialog.oSelectName;\n
              
              
                "
              
              
                );
                
                
                builder.Append(
              
              
                "
              
              
                if(document.getElementById(Id))document.getElementById(Id).value=vDialog.oSelectNameID;\n
              
              
                "
              
              
                );
                
                
                builder.Append(
              
              
                "
              
              
                }}</script>\n
              
              
                "
              
              
                );
                
                
              
              
                return
              
              
                builder;
                
                
                
                
                }
              
            
            
              
              
              
              
            
            
              #endregion
            
          
          
            
            
            
            
          
          
            protected
          
          
          
          
            override
          
          
          
          
            void
          
          
            CreateChildControls()
            
            
            
          
          
            
          
          
            
              {
              
              
              uiTable
            
            
              =
            
            
            
            
              new
            
            
              HtmlTable();
              
              
              uiTable.ID
            
            
              =
            
            
            
            
              "
            
            
              uiTable
            
            
              "
            
            
              ;
              
              
              uiTable.Width
            
            
              =
            
            
            
            
              "
            
            
              100%
            
            
              "
            
            
              ;
              
              
              uiTable.Border
            
            
              =
            
            
            
            
              0
            
            
              ;
              
              
              
              
            
            
              //
            
            
              txtObjectName=newTextBox();
            
            
              
              
            
            
              txtObjectName.ID
            
            
              =
            
            
            
            
              "
            
            
              ObjectName
            
            
              "
            
            
              ;
              
              
              txtObjectName.Visible
            
            
              =
            
            
            
            
              this
            
            
              .IsVisable;
              
              
              
              
            
            
              //
            
            
              hiddenObjectId=newHtmlInputHidden();
            
            
              
              
            
            
              hiddenObjectId.ID
            
            
              =
            
            
            
            
              "
            
            
              ObjectId
            
            
              "
            
            
              ;
              
              
              
              
            
            
              this
            
            
              .button
            
            
              =
            
            
            
            
              new
            
            
              Button();
              
              
            
            
              this
            
            
              .button.ID
            
            
              =
            
            
            
            
              "
            
            
              btnSelect
            
            
              "
            
            
              ;
              
              
            
            
              this
            
            
              .button.Attributes.Add(
            
            
              "
            
            
              width
            
            
              "
            
            
              ,
            
            
              "
            
            
              100
            
            
              "
            
            
              );
              
              
            
            
              this
            
            
              .button.Text
            
            
              =
            
            
            
            
              "
            
            
              選擇
            
            
              "
            
            
              ;
              
              
            
            
              this
            
            
              .button.Attributes.Add(
            
            
              "
            
            
              onclick
            
            
              "
            
            
              ,
            
            
              string
            
            
              .Format(
            
            
              "
            
            
              javascript:SetValue('{0}','{1}','{2}');
            
            
              "
            
            
              ,PageUrl,
            
            
              this
            
            
              .ClientID
            
            
              +
            
            
              "
            
            
              _ObjectName
            
            
              "
            
            
              ,
            
            
              this
            
            
              .ClientID
            
            
              +
            
            
              "
            
            
              _ObjectId
            
            
              "
            
            
              ));
              
              
            
            
              this
            
            
              .button.CausesValidation
            
            
              =
            
            
            
            
              false
            
            
              ;
              
              
              
              
            
            
              this
            
            
              .Controls.Add(uiTable);
              
              
            
            
              this
            
            
              .Controls.Add(hiddenObjectId);
              
              
            
            
              this
            
            
              .Controls.Add(txtObjectName);
              
              
            
            
              this
            
            
              .Controls.Add(button);
              
              
              }
            
          
          
            
            
            }
          
        
        
          
          
          }
        
      
      
        
        
      
    
   
  
    
    具體使用 :
    
    
     <cc1:SelectObject ID="PowerFlag" IsVisable="true" PageUrl="../../../../CommonPage/GetGroupInfo.aspx" runat="server">
    
     </cc1:SelectObject>
    
    通過屬性ObjectName,ObjectId獲取選擇返回的值.
  
  
    原文:
    
      http://shanyou.cnblogs.com/archive/2005/12/31/309171.html
    
  
  
    
      模態窗體選擇文本控件
    
  
 
 
 	
	
	
	
	
			
	
		
			
				
					更多文章、技術交流、商務合作、聯系博主
					
						微信掃碼或搜索:z360901061
					
					
					
						微信掃一掃加我為好友
						
							QQ號聯系:  360901061
						
					 
				 
			 
		 
	 
	
		
			
				
					您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
					
						【本文對您有幫助就好】元