~~~~~ 自定义控件问题, 请进! ~~~~~

ChengKing 2007-07-30 01:24:10
做个自定义控件, 由于有好多客户端方法, 并且这些方法
要可以让用户自已指定方法名. 现在这些都能做到.
但由于客户端这样的接口比较多, 是否可以在拖动此控件到页面上时, 让它自动生成一些默认的脚本模板方法, 比如:
<script language='jscript'>
function Default_Add_Click
{
//这里使用者只需填充功能即可
}
function Default_Delete_Click
{
//这里使用者只需填充功能即可
}
</script>
以上代码不是运行时产生的, 是在设计模式下, 即用户从工具栏里面拖控件到页面上
时产生的.也就是说给用户提供方便, 没必要让他自己再写以上代码了.

比如: 把一个Button控件拖放到控件上时, 会产生:
<Asp:Button id="Button1" runat="server"></Asp:Button>
这里除了让它自动产生控件标记(Asp.net自动生成), 还要让它自动生成上面 的JavaScript脚本模板方法.


如有解决办法或示例请发到: ZhengJian@ufida.com.cn, 并标明您的CSDN账号.

Thanks/King
...全文
1271 60 打赏 收藏 转发到动态 举报
写回复
用AI写文章
60 条回复
切换为时间正序
请发表友善的回复…
发表回复
wallis 2007-11-09
  • 打赏
  • 举报
回复
楼主,你的问题小弟查了一下,应该是你要的解决方法,WebFormsRootDesigner.AddClientScriptToDocument
wallis 2007-11-08
  • 打赏
  • 举报
回复
Infragistics的控件都支持楼主的功能,可以下一个,然后反编译一下救可以了,我现在页正在研究中
lxs185_2006 2007-08-08
  • 打赏
  • 举报
回复
这个问题可能以后还会有人会遇到,顶一下先!!
ChengKing 2007-08-07
  • 打赏
  • 举报
回复
谢谢大家!
先使用xiahouwen(武眉博<活靶子.NET>) 的.
不过脚本 块属性要改成如下才能在设计模式下出现所需效果, 大家参考一下:

[Bindable(true, BindingDirection.TwoWay)]
[DefaultValue("")]
[Editor("System.ComponentModel.Design.MultilineStringEditor,System.Design", typeof(UITypeEditor))]
[DesignerSerializationVisibility(
DesignerSerializationVisibility.Content),
PersistenceMode(PersistenceMode.InnerProperty)]
[NotifyParentProperty(true)]
xuyiazl 2007-08-03
  • 打赏
  • 举报
回复
mark
godgreat 2007-08-02
  • 打赏
  • 举报
回复
我来帮忙顶了
shoushii 2007-08-02
  • 打赏
  • 举报
回复
mark
真相重于对错 2007-08-02
  • 打赏
  • 举报
回复
我倒是觉得没意义

你拖一个控件就产生一段脚本。再拖一个控件呢?就再产生一份?那不冲突了么?
你可以说按照名字来生成脚本。改名呢?
==========================
这本来就是开发者的责任。完全可以避免。

改名你分析脚本,一起改,那脚本被改了呢,你怎么分析?
===
可以利用微软的脚本解释器组件


oloenxp 2007-08-01
  • 打赏
  • 举报
回复
也谈谈我的想法:
一、我觉得没必要这样做,主体的函数可以做成一个JS对象,只需要在Head引用该脚本一次即可,调用时传入html生成的ID来处理。
比如,一个我做过的一个List控件,就是可以排序,可编辑的那种列表,类似DataGrid.在排序时的function 是通过一个<td>的 onclick()触发,<td>里我放了排序字段orderby ,<td orderby="No"> 排序是的事件就是 onclike="order(this)"
这样才真正符合OOP的思想
二、楼上有些朋友谈到重写Render的方法来实现我觉得也不合理,如果一个页面我用了多个该控件呢,那创建的函数也就重复了






gameboy766 2007-08-01
  • 打赏
  • 举报
回复
用过一个第三方控件有类似的功能,但不是一拖上去就产生javascript,而是客户端事件向服务器端的一样,在属性里面有专门的客户端事件一项,把所有的客户端事件都列举出来了,双击就会自动产生Javascript事件代码,也可以选择客户端已存在的函数,用起来就和服务器事件一模一样。我觉得这样好些,用户可以控制,只实现需要的事件即可,但因为这个控件不是开源的,所以看不见源代码,并且本人水平也有限,所以这里只能帮楼主提出个思路来。
Arieslns 2007-08-01
  • 打赏
  • 举报
回复
唉,级别不够,学习!!!
babay2008 2007-08-01
  • 打赏
  • 举报
回复
学习.............
蝶恋花雨 2007-07-31
  • 打赏
  • 举报
回复
哇塞思归大哥这么晚了还在啊,学习下
可爱的排骨 2007-07-31
  • 打赏
  • 举报
回复
发性死鬼大哥的性欲值又多了5.......-_-
saucer 2007-07-31
  • 打赏
  • 举报
回复
一个比较丑陋的方式是试着把你要的输出放在ToolboxData里

[ToolboxData("<{0}:YourControl runat=\"server\"> </{0}:YourControl> .........这里.......")]
public class YourControl : WebControl
vainnetwork 2007-07-31
  • 打赏
  • 举报
回复
学习..........
真相重于对错 2007-07-31
  • 打赏
  • 举报
回复
关键是楼主要求写在<head></head〉之间不好处理
真相重于对错 2007-07-31
  • 打赏
  • 举报
回复
1

这个可能不符合常理
托上去就产生 到Html Source 内 且是控件外部
那么如果使用者写上去呢?
手写 <tagPrefix:tagName id="Control1" runat="server" />这样呢?
如何自动产生??
=======
可以,这就是ControlBuilder 和ControlDesigner 结合的引用,例如datagrid,你设定属性后她会自动在页面产生代码,当然如果你手动输入的话,正确的话,那和编辑器自动产生没有区别
如果错误,会报控件错误

vainnetwork 2007-07-31
  • 打赏
  • 举报
回复
关注,帮顶............
wdzr_826 2007-07-31
  • 打赏
  • 举报
回复
最近也在搞这个,mark学习下。
加载更多回复(40)

62,046

社区成员

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

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

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

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