使用了ajax动态加载ascx,请问怎么调用ascx中的函数呢?

人间挣道 2012-11-27 12:02:10
1.aspx页面中:(使用ajax显示ascx)
<asp:UpdatePanel ID="UpdatePanel3" runat="server">
<ContentTemplate>
<div ID="UCstmb" runat="server">

</div>
<asp:UpdateProgress ID="UpdateProgress3" runat="server">
<ProgressTemplate>
正在调入模版,请稍候……………………</ProgressTemplate>
</asp:UpdateProgress>
</ContentTemplate>
</asp:UpdatePanel>

a.aspx.cx中动态显示几个控件(2.ascx\3.ascx\4.ascx)

2.ascx等每个控件中有一个函数
public void SaveData()
{}

如何点击1.aspx中的保存按钮使2.ascx(3、4等)中的savedata()执行。
...全文
279 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
我是小李 2012-11-30
  • 打赏
  • 举报
回复
txtMobanID.Text = ddlMB.SelectedValue.ToString().Trim(); if (txtMobanID.Text.Trim() != "") { uc = Page.LoadControl("~/Moban/" + txtMobanID.Text + ".ascx"); uc.ID = txtMobanID.Text; this.UCstmb.Controls.Clear();//在主页面中显示控件ud this.UCstmb.Controls.Add(uc); } 在此基础上加入关键值,如隐藏框。如隐藏框value为1则为加载的1.ascx;2则为2.ascx …… 点击按键时利用AJAx后台请求ascx。然后利用转入的关键参数调用自定义的事件。
人间挣道 2012-11-27
  • 打赏
  • 举报
回复
补充一下: cs中的动态显示控件的代码 protected void ddlMB_SelectedIndexChanged(object sender, EventArgs e) { txtMobanID.Text = ddlMB.SelectedValue.ToString().Trim(); if (txtMobanID.Text.Trim() != "") { uc = Page.LoadControl("~/Moban/" + txtMobanID.Text + ".ascx"); uc.ID = txtMobanID.Text; this.UCstmb.Controls.Clear();//在主页面中显示控件ud this.UCstmb.Controls.Add(uc); } }
宝_爸 2012-11-27
  • 打赏
  • 举报
回复
又考虑了下,本来觉得还有一种方法Delegate的,好像不是太好,就不说了。
宝_爸 2012-11-27
  • 打赏
  • 举报
回复
如果UserControl是在CodeBehind中动态创建的,我觉得有两种方法解决: 1. 父页面,取得user control的值。

Protected Sub btnDisplayValues_Click(ByVal sender As Object, _
          ByVal e As System.EventArgs) Handles btnDisplayValues.Click
        ltlValues.Text = ""
    For Each c As Control In ph1.Controls
        'Find the specific user control that we added to this 
        'placeholder, and then get the selected values
        'for the dropdownlist, checkbox, and textbox and print them to the screen.
        If c.GetType.Name.ToLower = "webusercontrol_ascx" Then
            Dim uc As UserControl = CType(c, UserControl)      '这里转换成自定义的类型,然后就能访问其属性和方法了。
            Dim tbx1 As TextBox = uc.FindControl("tbx1")
            Dim ddl1 As DropDownList = uc.FindControl("ddl1")
            Dim cbx1 As CheckBoxList = uc.FindControl("cbx1")

            Dim sb As New System.Text.StringBuilder
            sb.Append("Textbox value: " & tbx1.Text & "<br />")
            sb.Append("Dropdown value: " & ddl1.SelectedValue & "<br />")
            sb.AppendLine("Checkbox values: ")

            For Each li As ListItem In cbx1.Items
                If li.Selected = True Then
                    sb.Append(li.Value & "<br />")
                End If
            Next

            sb.Append("<hr />")

            ltlValues.Text &= sb.ToString
        End If
    Next
End Sub
完整代码及解释参考: Dynamically add and remove user controls http://www.codeproject.com/Articles/26589/Dynamically-add-and-remove-user-controls
宝_爸 2012-11-27
  • 打赏
  • 举报
回复
Ajax中动态加载User Control怎么添加的?
rayyu1989 2012-11-27
  • 打赏
  • 举报
回复
你可以传个参数 依靠不同的参数值执行不同的函数
简介

很多人都知道Google Map,其实,Google为我们自己开发应用程序提供了丰富的API,我们只要具备一些JavaScript的知识,就完全可以利用它们。但是,对于我来说,在ASP.NET页面使用JavaScript来调用Google Map的API有一定难度,尤其是利用服务器端函数动态画出Google Map。例如,我想从SQL Server读取经纬度信息,然后在Google Map插入一个点。如果熟悉AJAX的话,很快就能得出答案。我们必须用JavaScript调用ASP.NET服务器端函数,利用得到的数据来绘制Google Map。简单吧?其实,对于我来说并非如此。因此,我决定开发一个用户控件来处理JavaScript代码,这样,我就能集精力于服务器端函数了。



特点

1.不需要JavaScript知识就能绘制Google Maps,只需在相应页面加入自定义控件即可。

2.使用AJAX调用来获取服务器端数据。

3.提供最优越的性能表现。



如何使用

在这里,我并不想解释我是如何创建该控件的。我只要教你如何使用它。



系统需求

1.Visual Studio 2005或更高版本

2.Microsoft ASP.NET AJAX Extensions支持

3.Internet Explorer 7.0或Mozilla Firefox 2.x



你只需完成以下几步:

1.新建一个ASP.NET AJAX-Enabled Website。

2.将源代码App_Code文件夹、GoogleMapForASPNet.ascx、GoogleMapForASPNet.ascx.cs,GService.asmx复制到你的ASP.NET应用程序下。

3.保证你的网站支持AJAX技术。

4.打开Default.aspx(或任何你想加入Google Map的位置),将该自定义控件拖放至相应位置并编译,这样就实现了最简单的带有Google Map的ASP.NET网页。

仿关村在线参数修改弹出对话框 v1.1源码 程序描述: 模仿关村在线商品展览页面点击编辑按钮后弹出窗口修改商品信息的功能。 命名规则: 1、所有由多个单词组成的对象(类、函数、属性、变量、字段等)的名称每个单词的第一个字母大写,参数除外。(2011-10-18) 2、类名、对象名=对应的SQL表名+层次名。 如:DataTypeModel、DataTypeBLL、DataTypeDAL DataType(SQL表名)BLL、DAL、Model(层次名)(2011-10-18) 3、对象名实例名: (1)当在同一个生命周期和参数只存在一个同层次的对象时,对象名实例名=全部小写的层名。 如:DataTypeModel model(2011-10-18) (2)当在同一个生命周期和参数只存在多个同层次的对象时,对象名实例名=第一个字母小写的对象名。 如:DataTypeModel dataTypeModel=null(2011-10-18) 4、属性名=对应的SQL表的与之相对应的字段名。 5、变量名=属性名+_+数据类型的前三个字母。如:string ProductName_str、String ProductName_Str(2011-10-18) 6、参数名=第一个字母小写的属性名+_+数据类型的前三个字母。如:string productName_str、String productName_Str(2011-10-18) 7、控件名: (1)开发环境给出的控件名为一个单词组成时:控件名=自定义名+单词的前三个字母如:Button MyBut= new Button()。(2011-10-21) (2)开发环境给出的控件名为多个单词时:控件名=自定义名+每个单词的第-个字母如:TextBox MyTB= new TextBox()。(2011-10-21) 问题 1、把对话框作为一个控件单独封装没有实现,下一版实现。(2011-10-20) 解决: 使用Ajax和WebService完成了对话框的初始化和显示(2011-11-10) 2、下一版使用Ajax实现话框控件。(2011-10-20) 3.CSS实现的对话框控件必须在当前页面上最好不要在ascx控件页面上实现因为不能从一个button事件调用另一个button事件, 如果在ascx控件页面上实现则对话框控件执行的操作太多并且可能在ascx控件页面实例化多个Bll对象(2011-10-21) 4.当使用Jqurey时Button单击事件不执行 5.验证控件VerificationAsc.ascx的“尖角居”的CSS样式在IE6的兼容性不是很完美。(2011-11-06) 修改 Vilidate.cs的修改 1、对于 “验证一个对象输入的是否全部都是[数字]”的验证函数进行了修改(2011-11-4) 2、增加了“验证输入的数字是否在其类型的取值范围内”函数使用枚举类型数据和Switch Case为不同取值范围的整型数据输出验证提示信息(2011-11-4) 3、修改了弹出对话框向数据库提交可空类型数据(2011-11-4) 4、对验证控件进行了修改(2011-11-4) VerificationAsc.ascx 的修改 1、把验证控件改为VerificationAsc.ascx,并修改了CSS样式。(2011-11-06)

62,244

社区成员

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

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

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

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