`
ruilin215
  • 浏览: 1151937 次
  • 性别: Icon_minigender_2
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

模态窗体选择文本控件

阅读更多

模态窗体选择文本控件

经常使用摸态窗体,总是需要重复编写javascript脚本.所以封装了这个控件,这个控件使用的是aspnet2.0的API.所以用在1.1上的需要自己修改代码.

控件代码
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->usingSystem;
usingSystem.ComponentModel;
usingSystem.Text;
usingSystem.Web.UI;
usingSystem.Web.UI.HtmlControls;
usingSystem.Web.UI.WebControls;

namespaceDotnetClubPortal.WebControls
{
/**////<summary>
///用户选择控件
///</summary>

[DefaultProperty("Text"),
ToolboxData(
"<{0}:SelectObjectrunat=server></{0}:SelectObject>")]
publicclassSelectObject:,INamingContainer
{
protectedSystem.Web.UI.HtmlControls.HtmlInputHiddenhiddenObjectId;
protectedSystem.Web.UI.WebControls.TextBoxtxtObjectName;
protectedSystem.Web.UI.WebControls.Buttonbutton;


privateHtmlTableuiTable;

publicSelectObject()
{
txtObjectName
=newTextbox();
hiddenObjectId
=newHtmlInputHidden();
}


/**////<summary>
///ID,ID中间使用","分隔
///</summary>

[Browsable(false),Category("设置"),Description("取得的对象值,中间使用','分隔"),DefaultValue("")]
publicstringObjectId
{
get
{
returnhiddenObjectId.Value;
}

set
{
hiddenObjectId.Value
=value.ToString();
}

}


/**////<summary>
///名称,中间使用","分隔
///</summary>

[Browsable(false),Category("设置"),Description("对象名称,中间使用','分隔"),DefaultValue("")]
publicstringObjectName
{
get
{
returntxtObjectName.Text;
}

set
{
this.txtObjectName.Text=value.ToString();
}

}


[Category(
"设置"),Description("选择页面路径"),Browsable(true),NotifyParentProperty(true)]
publicstringPageUrl
{
get
{
objectobj=ViewState["PageUrl"];
return(obj==null)?string.Empty:obj.ToString();
}

set
{
ViewState[
"PageUrl"]=value;
}

}


/**////<summary>
///编辑框是否可见
///</summary>

[Category("设置"),Description("编辑框是否可见"),Browsable(true),DefaultValue(true)]
publicboolIsVisable
{
get
{
objectobj=ViewState["Visable"];
return(obj==null)?false:bool.Parse(obj.ToString());
}

set
{
ViewState[
"Visable"]=value;
}

}


protectedoverridevoidRender(HtmlTextWriteroutput)
{
base.Render(output);
Control[]CtrlArray;
CtrlArray
=newControl[3];
CtrlArray[
0]=this.hiddenObjectId;
CtrlArray[
1]=this.txtObjectName;
CtrlArray[
2]=this.button;
CreateTabeRow(CtrlArray);
}




/**////<summary>
///创建行
///</summary>
///<paramname="Obj">行中包含的控件</param>

privatevoidCreateTabeRow(Control[]Obj)
{
HtmlTableRowtr
=newHtmlTableRow();
HtmlTableCelltd
=newHtmlTableCell();
foreach(ControlcinObj)
{
if(c!=null)
{
td.Controls.Add(c);
}


}

tr.Cells.Add(td);
uiTable.Rows.Add(tr);
}


protectedoverridevoidOnPreRender(EventArgse)
{
RegisterClientScriptBlockJavaScript();
base.OnPreRender(e);
}


发出客户端脚本RegisterClientScriptBlockJavaScript()#region发出客户端脚本RegisterClientScriptBlockJavaScript()
privatevoidRegisterClientScriptBlockJavaScript()
{
//如果已经注册了脚本则不再注册
if(Page.ClientScript.IsClientScriptBlockRegistered("SetValue"))
{
return;
}

else
{
Page.ClientScript.RegisterClientScriptBlock(
this.GetType(),"SetValue",SetValue().ToString());
}


}


publicStringBuilderSetValue()
{
StringBuilderbuilder
=newStringBuilder();
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");
returnbuilder;

}


#endregion


protectedoverridevoidCreateChildControls()
{
uiTable
=newHtmlTable();
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=newButton();
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

分享到:
评论

相关推荐

    C#窗体控件和组件.pdf

    `以模态方式显示窗体。 - **关闭窗体**:可以使用`fm.Close();`或`this.Close();`来关闭当前窗体。如果需要关闭其他窗体,则可以通过`Application.OpenForms["Form1"].Close();`来实现。 - **隐藏和重新显示窗体**:...

    C#教程 第6章 窗体、控件和组件

    1. 文本操作类控件,如`TextBox`,用于接收和显示文本输入。 2. 选择操作类控件,如`RadioButton`和`CheckBox`,提供单选或多选功能。 3. 图像操作类控件,如`PictureBox`,用于显示图片。 4. 菜单、工具栏与状态栏...

    一个窗体访问另一个窗体的控件的值

    当开发者需要从一个窗体(Form1)访问另一个窗体(Form2)中的控件值时,通常涉及到窗体间的通信问题。本文将详细解析如何实现这一功能,并深入探讨其中的关键技术点。 ### 一、窗体间通信基础 在.NET Framework中...

    模态和非模态对话框创建示例

    - **非模态对话框**适用于提供长期运行的功能,例如查找和替换文本、文件管理器等,用户可以在使用这些功能的同时继续其他操作。 4. **VC6.0中的对话框资源**: - 在资源编辑器中,可以创建和编辑对话框资源,...

    窗体及控件的属性方法及事件

    模态窗体在显示时会阻止用户与程序中的其他非模态窗体交互。 - **ActiveControl/ActiveMdiControl**:`ActiveControl`属性用于获取或设置容器控件中的活动控件;`ActiveMdiControl`属性用于获取多文档界面的当前活动...

    vb父子窗体实例

    在本例中,用户通过树形控件选择项目,触发相应的子窗体显示。 **2. 树形控件的使用** 树形控件(TreeView)是一种常见的GUI元素,用于展示层次结构的数据。在VB中,我们可以使用TreeView控件来创建一个可点击的...

    C#控件详细说明

    10. **Modal属性**:设置窗体是否为模态对话框,模态窗体必须关闭后才能继续与主窗体交互。 11. **ActiveControl属性**:获取或设置当前激活的控件,即用户交互的对象。 12. **ActiveMdiChild属性**:在多文档界面...

    web的控件哦

    模态窗体在显示期间会阻止用户与父窗体或其他窗体的交互,常用于对话框。 - ActiveControl属性:返回当前在窗体内的活动控件,即用户正在与其交互的控件。 - ActiveMdiChild属性:在MDI(多文档界面)环境下,返回...

    c#控件说明

    10. `Modal`属性:设定窗体是否为模态窗体,模态窗体需关闭后才能操作其他窗体。 11. `ActiveControl`属性:获取或设置当前活动的控件。 12. `ActiveMdiChild`属性:在多文档界面(MDI)中获取当前活动的子窗体。 13...

    C#控件一览表,所有的控件属性介绍等

    10. **Modal属性**:设定窗体是否为模态窗体,模态窗体需关闭后才能操作其他窗体。 11. **ActiveControl属性**:获取或设置当前活动的子控件,通常用于处理键盘事件。 12. **ActiveMdiChild属性**:在多文档界面...

    C#控件大全(史上最全的C#控件)

    - **Modal属性**:设置窗体是否为模态窗体,模态窗体阻止用户与其它非模态窗体交互,直到模态窗体被关闭。 - **ActiveControl属性**:获取或设置当前活动的控件。 - **ActiveMdiChild属性**:对于MDI窗体,用于获取...

    C#控件大全,好的很。

    - `Modal`:设置窗体是否为模态对话框,模态窗体在关闭前不允许用户操作其他窗体。 - `ActiveControl`:获取或设置窗体内的活动控件。 - `ActiveMdiChild`:在MDI(多文档界面)应用程序中获取当前活动的子窗体。...

    C#控件大全 全面的C#控件讲解

    14. **Modal属性**:确定窗体是否为模态窗体。如果是模态窗体,则值为true;非模态窗体则为false。 15. **ActiveControl属性**:获取具有活动焦点的控件。 16. **ActiveMdiChild属性**:获取当前活动的MDI子窗体。 ...

    VBA 窗体 资料 VBA窗体资料

    2. 对话框窗体:通过设置窗体的Modal属性为True,可以创建模态窗体,确保用户在关闭该窗体前不能与应用程序的其他部分交互。 3. 动态控件:在运行时可以根据需要动态添加或删除控件,以适应不同的场景需求。 综上所...

    C#编程控件工具。。。

    如果是模态窗体,则其他所有非模态窗体将不可交互,直到模态窗体关闭。 - **ActiveControl属性**:获取或设置容器中的活动控件,即获得焦点的控件。 - **ActiveMdiChild属性**:获取多文档界面(MDI)的当前活动子...

    c#控件设计整理

    - `Modal`:设定窗体是否为模态对话框,模态窗体需关闭后才能与主窗体交互。 - `ActiveControl`:当前获得焦点的控件。 - `ActiveMdiChild`:在MDI应用程序中当前激活的子窗体。 - `AutoScroll`:启用或禁用窗体...

    C#控件大全

    - **Modal属性**:设置窗体是否为模态窗体,模态窗体会阻止用户与其它窗体的交互,通常用于对话框。 - **ActiveControl属性**:获取或设置容器控件(包括窗体本身)中的当前激活控件。 - **ActiveMdiChild属性**...

    C#窗体互操作-子父窗体互操作

    这里,`richTextBox1`是父窗体中的一个富文本框控件,`UpdateText`方法会将其文本内容更新为子窗体传递过来的值。 此外,还可以通过属性或事件来实现更复杂的交互。例如,父窗体可以声明一个公开的属性,子窗体可以...

    WPF控件参考

    - **Modal属性**:设置窗体是否为模态窗体,模态窗体需关闭后才能与其他窗体交互。 - **ActiveControl属性**:获取或设置当前活动的控件。 - **ActiveMdiChild属性**:在MDI(多文档界面)环境中获取当前活动的子...

    C#_winform_多个窗体之间相互传递数据操作

    这将创建一个非模态窗体,允许用户在两个窗体间切换。 4. **数据刷新**:在接收到新数据后,父窗体需要及时更新相关的控件显示。例如,如果数据传递到了TextBox,可以调用`textBox1.Text = newData;`来更新文本;...

Global site tag (gtag.js) - Google Analytics