自定义控件传值问题

lisweden 2011-08-24 10:46:28
网站上的三个部份都是用自定义控件实现的:Header,Container,Footer;均放在UpdatePanel里,整个网站都使用异步回传机制.


Header里有一个搜索框:



<div id="search">
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<input id="query" size="40" maxlength="2048" value="" type="text" runat="server" />
<asp:Button ID="SearchButton" runat="server" Text="Search" onclick="Search_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</div>



Container里有多个自定义控件,其中一个如下:



<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<ul:textShow ID="Show1" runat="server" /> ///主要用于显示一些基本信息
</ContentTemplate>
</asp:UpdatePanel>



如何实现点击Header里的搜索,在Container里异步更新搜索出来的信息? 弄蛮久了未解决,请大侠们帮帮忙!

...全文
257 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
lisweden 2011-08-25
  • 打赏
  • 举报
回复
自已顶一下,做了个测试页面,下面的代码是能实现控件间的异步更新,但放到项目中,却出现:未能找到XXX ID的控件的异常.可能是项目中套的控件层太多了! 继续向大侠们请求帮忙!




protected void Page_Load(object sender, EventArgs e)
{
Button bt = (Button)this.Head1.FindControl("SearchButton"); //Head1是一个自定义控件
bt.Click += new EventHandler(bt_Click);
}

void bt_Click(object sender, EventArgs e)
{
TextBox tb = (TextBox)this.Head1.FindControl("UpdatePanel1").FindControl("query");
if (tb.Text.Equals("") || tb.Text.Equals(null))
{
return;
}
else
{
USStock.code = tb.Text;
}

UpdatePanel up = (UpdatePanel)this.WidgetTabHost.FindControl("WidgetBodyUpdatePanel");//WidgetTabHost,自定义控件
up.Update();

}

lisweden 2011-08-24
  • 打赏
  • 举报
回复
xuebingZ 2011-08-24
  • 打赏
  • 举报
回复
关注。。。
lisweden 2011-08-24
  • 打赏
  • 举报
回复


网站是之前的人做的,现在增加搜索的功能,大侠们给点解决方案!具体需求如上图
lisweden 2011-08-24
  • 打赏
  • 举报
回复
对控件的传值,是在页面加载完之后操作的.自定义控件在页面加载时已经有一些默认的内容了,
就是想通过Header搜索框,在一个自定义控件里异步更新搜索出来的内容!
lisweden 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wxr0323 的回复:]

上下两个UpdatePanel ID都是"UpdatePanel1"。


看看这种办法 参考
[/Quote]

因为是在不同的自定义控件里,没有ID上冲突,但最好是不同!
子夜__ 2011-08-24
  • 打赏
  • 举报
回复
上下两个UpdatePanel ID都是"UpdatePanel1"。


看看这种办法 参考
siren28 2011-08-24
  • 打赏
  • 举报
回复
C#不会,瑞典还是直接去下载个现成的下来看得了!!!嘿嘿....学校里常干的事
siren28 2011-08-24
  • 打赏
  • 举报
回复
大家顶起!!!!!!!!!!!!!!!!!!把他的肺给我干顶出来!!!!!!!
lisweden 2011-08-24
  • 打赏
  • 举报
回复
自已顶下,有类似的方法也可以!
Hack, Everything!
lisweden 2011-08-24
  • 打赏
  • 举报
回复
加上了
<Triggers>
<asp:AsyncPostBackTrigger ControlID="指定为你的搜索按钮" />
</Triggers>

调试出现下面的错误:
未能为 UpdatePanel“WidgetBodyUpdatePanel”中的触发器找到 ID 为“SearchButton”的控件。

是不是服务器控件生成客户端ID不同?
ajaxtop 2011-08-24
  • 打赏
  • 举报
回复
楼主这样的

updatepanel中有一个这样的属性updateMode='Condition'
就是说要有一个条件来触动这个panel中的刷新

而且这个panel中还有一个

<Triggers>
<asp:AsyncPostBackTrigger ControlID="指定为你的搜索按钮" />
</Triggers>

这样你在搜索按钮事件中对你的text1进行数据源绑定

并且实现异步
hnsycsj 2011-08-24
  • 打赏
  • 举报
回复
要么改些2个自定义控件,要么用js ajax 异步更新局部!
lisweden 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zjailanzj 的回复:]

真的是项目给项目找麻烦 为了省事而找事

或者给按钮绑定一个js方法 方法里面就刷新界面就好了 在加载里面刷新下Bind()方法 在bing()多家一步 判断用户是否点击查询 点击了查询就加上查询条件在绑定数据
[/Quote]

给原有的项目加需求,并且项目是之前的人做的,没文档,相当的蛋疼啊!
lisweden 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lmaohuanl 的回复:]

lz你用ajax的异步刷新吧,
[/Quote]

是的,每个部件里都运用了UpdatePanel
ly745455 2011-08-24
  • 打赏
  • 举报
回复
异步刷新
LMAOhuaNL 2011-08-24
  • 打赏
  • 举报
回复
lz你用ajax的异步刷新吧,
zjailanzj 2011-08-24
  • 打赏
  • 举报
回复
真的是项目给项目找麻烦 为了省事而找事

或者给按钮绑定一个js方法 方法里面就刷新界面就好了 在加载里面刷新下Bind()方法 在bing()多家一步 判断用户是否点击查询 点击了查询就加上查询条件在绑定数据

62,051

社区成员

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

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

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

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