制作服务器控件的几个问题!!!!忘高手指教!!!跪谢!!!!

zftow110 2008-09-10 09:31:26
开发工具是VS2008
1-我制作一个控件中有一个<input type=text>,定义一属性Atext为其value,当我在测试页添加一个button,在Button1_Click事件里写入 a.Atext="1"能够得到其值,但写入Label1.text=a.Atext时确无法得到在控件a里的Atext属性值,不知道怎么才能得到。
部分代码:

[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? String.Empty : s);
}

set
{
ViewState["Text"] = value;
}
}
protected override void Render(HtmlTextWriter writer)
{
......
writer.Write("<input value=\""+Text+"\" id=\"" + this.ID + "_001\" style=\"width:118px;height:18px;border:none;background-image:url(" + this.Page.ClientScript.GetWebResourceUrl(this.GetType(), "MyDiaryControl.css_js.md_005.md_005.gif") + ");\"/>");
.......
}


2-我定义了个属性为ATColor颜色属性,定义时声明为color,但在使用的时候右边属性栏显示不是选取颜色的选项,而是下拉选择色Gray,rad等,请问怎样才能实现颜色选取,如"#000000,#ffffff"等

声明处如下:

//边框颜色
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Description("边框颜色")]
[Localizable(true)]
public Color MdFrameColor
{
get
{
try
{
Color s = (Color)ViewState["MdFrameColor"];
return s;
}
catch
{
return Color.Gray;
}
}

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

}

3-我定义了个集合属性,功能也能实现,但不能在集合编辑器里进行编辑,我搜索了下可以实现相关在集合编辑器里编辑,所以我想问下,怎么实现!谢谢!
4-有一个控件我在VS里边我只想它输出一段文字,不需要输出其所有(因为加入了部分JS,看起来很乱),不知道怎么写!!!


问题有点多,分不够可以另加(我一张贴最多只能放这么多),希望高手指教一下,感激不尽!谢谢!
...全文
158 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zftow110 2008-09-10
  • 打赏
  • 举报
回复
问题2(颜色)和问题4(设计时界面)已经解决了!
问题1,我按这种方式还是无法得到值!!

protected override void CreateChildControls()
{
TextBox t = new TextBox();
t.ID = this.ID + "_001";
t.Text = Text;
this.Controls.Add(t);
base.CreateChildControls();
}

protected override void Render(HtmlTextWriter writer)
{
RenderBeginTag(writer);//span开始

writer.Write("<script type=\"text/javascript\">");
writer.Write("$(document).ready(function(){");
writer.Write("$(\"#"+this.ID+"_001\").click(mdjs005_001);");
writer.Write("});");
writer.Write("</script>");

this.RenderChildren(writer);


RenderEndTag(writer);//span结束
}



问题3则一点头续都没有。。。。。有没相关代码或例子看下!!!谢谢!
cpp2017 2008-09-10
  • 打赏
  • 举报
回复
4.你是只设计时看到的界面吗?

protected override void Render(HtmlTextWriter writer)
{
if (this.Context ==null)
{
writer.Write("<div style='width:100px;height:100px;background-color:red;color:white'>我的控件</div>");
}
//....其他代码
}
cpp2017 2008-09-10
  • 打赏
  • 举报
回复
关于颜色05好像是可以
08加个属性。



[TypeConverterAttribute(typeof(WebColorConverter))]
cpp2017 2008-09-10
  • 打赏
  • 举报
回复
1.

protected override void CreateChildControls()
{
TextBox t = new TextBox();
t.Style.Add("..........");
this.Controls.Add(t);
base.CreateChildControls();
}
cpp2017 2008-09-10
  • 打赏
  • 举报
回复
3.你所说的集合就是Md_Items ? 它是一个Arraylist它的成员是一个object相当于未知的对象,所以没有办法在编辑器中去初始化他。
应该自己写一个collection类。

zftow110 2008-09-10
  • 打赏
  • 举报
回复
关于问题1:还是不太明白,能否给出一点示例代码看看!!


关于问题2:
为什么我显示属性为:图1


而不是



关于问题4

因为JS原因,只能显示这样。。。。。。。
现在我干脆想什么都不显示,只显示一段文字:XXX控件,域我想另外写显示的代码!!!不知能否实现??
zftow110 2008-09-10
  • 打赏
  • 举报
回复
问题3代码

public class news_Items
{
private string Image1;
private string Text1;
private string URL1;
//图片地址
//[Bindable(true)]
[Category("Behavior")]
[DefaultValue("图片地址")]
[Description("图片地址")]
[Localizable(true)]
[NotifyParentProperty(true)]
public string NewsImage
{
get
{
if (Image1 == "" | Image1 == null)
{
Image1 = "图片地址";
}
return Image1;
}

set
{
Image1 = value;
}

}
//文字说明
//[Bindable(true)]
[Category("Behavior")]
[DefaultValue("文字说明")]
[Description("文字说明")]
[Localizable(true)]
[NotifyParentProperty(true)]
public string NewsText
{
get
{
if (Text1 == "" | Text1 == null)
{
Text1 = "暂无文字说明";
}
return Text1;
}

set
{
Text1 = value;
}

}
//图片地址
//[Bindable(true)]
[Category("Behavior")]
[DefaultValue("图片地址")]
[Description("图片地址")]
[Localizable(true)]
[NotifyParentProperty(true)]
public string NewsURL
{
get
{
if (URL1 == "" | URL1 == null)
{
URL1 = "#";
}
return URL1;
}

set
{
URL1 = value;
}

}
}




private ArrayList arraylist1;
[Category("Behavior")]
[Description("项集合")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
public ArrayList Md_Items
{
get
{
if (arraylist1 == null)
{
arraylist1 = new ArrayList();
}
return arraylist1;
}
}




protected override void Render(HtmlTextWriter writer)
{
RenderBeginTag(writer);//span开始

string Image1 = "";
string Text1 = "";
string URL1 = "";
foreach (news_Items item1 in Md_Items)
{
if (item1.NewsImage == "图片地址")
{
Image1 = Image1 + "\"" + this.Page.ClientScript.GetWebResourceUrl(this.GetType(), "MyDiaryControl.css_js.framework.system_001.gif") + "\",";
}
else
{
Image1 = Image1 + "\"" + item1.NewsImage + "\",";
}
Text1 = Text1 + "\"" + item1.NewsText + "\",";
URL1 = URL1 + "\"" + item1.NewsURL + "\",";
}

Image1 = Image1.Substring(0, Image1.Length - 1);
Text1 = Text1.Substring(0, Text1.Length - 1);
URL1 = URL1.Substring(0, URL1.Length - 1);

writer.Write("<script>");
writer.Write("$(document).ready(function(){");
writer.Write("$(\"."+this.ID.ToString()+"_md002\").mdjs_002([" + Image1 + "]");
writer.Write(",[" + Text1 + "]");
writer.Write(",[" + URL1 + "]");
writer.Write(",[\"" + this.ID.ToString() + "rnd\"]");
writer.Write("," + MdTabTime + ");});");
writer.Write("</script>");
writer.Write("<div class=\"" + this.ID.ToString() + "_md002\" style=\"border:" + MdFrameThickness + "px solid " + MdFrameColor.ToKnownColor() + ";width:" + MdFrameWidth + "px;height:" + MdFrameHeight + "px;\"></div>");

RenderEndTag(writer);//span结束
}
cpp2017 2008-09-10
  • 打赏
  • 举报
回复
3.你是怎么写的?发点代码看看
4.详细一些。
cpp2017 2008-09-10
  • 打赏
  • 举报
回复
2.现在.net控件颜色属性的选择器都是一样的。
cpp2017 2008-09-10
  • 打赏
  • 举报
回复
1、这个写法Text只是做一个普通的属性,并没有和界面的输入值挂上钩,所以是没有意义的。
要么在CreateChildControl中创建一个TextBox添加到子控件中,要么在render中加上name,然后用Request.Form接收其值。

zftow110 2008-09-10
  • 打赏
  • 举报
回复
顶下,问题3还是未解决!
zftow110 2008-09-10
  • 打赏
  • 举报
回复
高手就是高手,问题也1已解决,现在就问题3最后一个问题了!!!!!
西安风影 2008-09-10
  • 打赏
  • 举报
回复
mark
priwilliam 2008-09-10
  • 打赏
  • 举报
回复
小p到此一游
cpp2017 2008-09-10
  • 打赏
  • 举报
回复

private TextBox t = new TextBox();
protected override void OnInit(EventArgs e)
{

this.Controls.Add(t);

base.OnInit(e);
}


[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
{
get
{
return t.Text;
}

set
{
t.Text = value;
}
}
gongsun 2008-09-10
  • 打赏
  • 举报
回复
顶起。

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧