如何更新ascx文件的类容

Signs 2012-02-26 12:41:36
我的用户控件中有一个label,在用户控件中有两个Public的变量分别设置Label的text属性和颜色属性;

在调用的页面中,通过一个按钮事件修改ascx文件的这两个属性的值以后,怎样让ascx刷新后显示新的值?
...全文
125 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Signs 2012-02-26
  • 打赏
  • 举报
回复
非常感谢楼上的,我重新建了个test.aspx页面,拖入控件后发现
message1.ShowText()
可以调用了,尴尬啊,为啥原来的页面不行呢
Signs 2012-02-26
  • 打赏
  • 举报
回复
我是这样做的

<%@ Register src="Controls/message.ascx" tagname="message" tagprefix="uc2" %>
<uc2:message ID="message1" runat="server" Visible="False" />

‘在后台代码中,调用ShowText无法找到该方法,LoadControl加不加没什么意义,这个只是动态加载,但是我的用户控件已经拖入页面,只是希望在事件中更改其属性
message1.ShowText()
孟子E章 2012-02-26
  • 打赏
  • 举报
回复
采用这种
<uc1:TestWebUserControl ID="TestWebUserControl1" runat="server" Text="A" Color="green" />
放入页面是可以调用方法的
孟子E章 2012-02-26
  • 打赏
  • 举报
回复
你要使用LoadControl,应该这样吧

Dim x as message = CType(Page.LoadControl("Controls/message.ascx"),message)
x.MSText = T
x.MStype = B
Page.Form.Controls.Add(x)
Signs 2012-02-26
  • 打赏
  • 举报
回复
Private Sub ShowText()
Label1.ForeColor = _Color
Label1.Text = _Txt
End Sub

这个方法最开始是public的,但是无法调用
Signs 2012-02-26
  • 打赏
  • 举报
回复
补充:
TestWebUserControl1.SetNewValue();
这样貌似是不能调用SetNewValue()方法的
Signs 2012-02-26
  • 打赏
  • 举报
回复
谢谢楼上的,已经做到这一步了,但是用户控件的Label不会变化
代码如下:
用户控件后台代码:
Private _Color As System.Drawing.Color
Private _Txt As String

''' <summary>
''' 设置显示信息是否为错误信息
''' </summary>
''' <value></value>
''' <remarks></remarks>
Public WriteOnly Property MStype() As Boolean
Set(value As Boolean)
If value = True Then
_Color = Drawing.Color.Black
Else
_Color = Drawing.Color.Red
End If
End Set
End Property

''' <summary>
''' 定义显示提示的文本内容
''' </summary>
''' <value></value>
''' <remarks></remarks>
Public WriteOnly Property MSText() As String
Set(value As String)
_Txt = value
End Set
End Property

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
ShowText()
End Sub

Private Sub ShowText()
Label1.ForeColor = _Color
Label1.Text = _Txt
End Sub



调用的方法:
Private Sub ShowMsg(C As manage_Controls_message, T As String, B As Boolean)
C.Page.LoadControl("Controls/message.ascx")
C.Visible = True
C.MSText = T
C.MStype = B
End Sub

在单击按钮事件时执行下面的代码:
ShowMsg(message1, "靠!", False)
孟子E章 2012-02-26
  • 打赏
  • 举报
回复
FindControl找到ascx,然后设置ascx.Text等要设置的属性

例子
TestWebUserControl.ascx
<%@ Control Language="C#" EnableViewState="true" AutoEventWireup="true" ClassName="TestWebUserControl" %>

<script runat="server">
public String Text { set; get; }
public String Color { set; get; }
public void SetNewValue()
{
x.Text = this.Text;
x.Style["color"] = Color;
}

protected void Page_Load(object sender, EventArgs e)
{
SetNewValue();
}
</script>
<asp:Label ID="x" runat="server"></asp:Label>


Test.aspx
<%@ Page Language="C#" AutoEventWireup="true" %>

<%@ Register Src="TestWebUserControl.ascx" TagName="TestWebUserControl" TagPrefix="uc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

protected void Button1_Click(object sender, EventArgs e)
{
TestWebUserControl1.Text = "新设置的值";
TestWebUserControl1.Color = "#FF0000";
TestWebUserControl1.SetNewValue();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<uc1:TestWebUserControl ID="TestWebUserControl1" runat="server" Text="A" Color="green" />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
</form>
</body>
</html>
Signs 2012-02-26
  • 打赏
  • 举报
回复
我是纯.NET的,不打算用JS
nonocast 2012-02-26
  • 打赏
  • 举报
回复
javascript应该可以

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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