从我自己的网络控制中获得价值
本文关键字:控制 我自己 自己的 网络 | 更新日期: 2023-09-27 18:16:42
我写了一个在ASP上创建自己的控件的例子。净表格。控件非常简单-组合框和按钮。用户需要选择值,当他提交按钮后,组合框中的值需要显示在标签中。所以。控件代码:
public class MyControl:Control,IPostBackEventHandler
{
protected override void Render(HtmlTextWriter writer)
{
writer.AddAttribute("size","1");
writer.AddAttribute("ID","List2");
writer.AddAttribute("name", "ListYear");
writer.RenderBeginTag(HtmlTextWriterTag.Select);
for (int i = 1950; i < DateTime.Now.Year; i++)
{
writer.RenderBeginTag(HtmlTextWriterTag.Option);
writer.WriteEncodedText(i.ToString());
writer.RenderEndTag();
}
writer.RenderEndTag();
writer.AddAttribute("type","submit");
writer.AddAttribute("value","ClickMe");
writer.AddAttribute("name","BtnChange");
writer.RenderBeginTag(HtmlTextWriterTag.Input);
writer.RenderEndTag();
base.Render(writer);
}
public delegate void OnClickEventHandler(object sender, EventArgs args);
public event OnClickEventHandler Click;
public void RaisePostBackEvent(string eventArgument)
{
Click(this, new EventArgs());
}
}
Page ASP:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestMyControl.aspx.cs" Inherits="Hello.TestMyControl" %>
<%@ Register assembly="Hello" namespace="Hello" tagPrefix="MyContrl" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Label" Visible="False"></asp:Label>
<br />
<MyContrl:MyControl runat="server" OnClick="Unnamed1_OnClick" ID="Control1"></MyContrl:MyControl>
</div>
</form>
</body>
</html>
And in end Event函数:
protected void Unnamed1_OnClick(object sender, EventArgs args)
{
Label1.Visible = true;
Label1.Text="You choose "+Control1.????+" year";
}
用什么来代替从列表中获取值的问号?
注:发生了一些奇怪的事情。因为当我点击按钮时,处理程序没有被调用,我不能进入Unnamed1_OnClick
既然您已经在属性上设置了值,那么要检索它,您需要访问Attributes
property
让你的控件继承自HtmlControl
public class MyControl : HtmlControl, IPostBackEventHandler
{
...
在你的页面
<MyContrl:MyControl runat="server" OnClick="Unnamed1_OnClick" ID="Control1"></MyContrl:MyControl>
在你的代码
Label1.Text = Control1.Attributes["value"];
您可以调试这一行以查看所有可用的属性
您需要传递combobox
的名称及其所选文本的值。
:
protected void Unnamed1_OnClick(object sender, EventArgs args)
{
Label1.Visible = true;
Label1.Text="You choose "+ myCustomControl.SelectedItem.Value.ToString()
+ " year";
}
(抱歉。我误读了最初的帖子,并在意识到自己的错误后编辑了相应的代码。
将选择列表添加到name="YourSelectList"的用户控件
然后在click事件处理程序
中protected void Unnamed1_OnClick(object sender, EventArgs args)
{
Label1.Visible = true;
Label1.Text="You choose "+Control1.YourSelectList.SelectedValue.ToString()+" year";
}