English 中文(简体)
在用户控件中设置文本框文本
原标题:Set TextBox Text in a User Control

在我的aspx页面上,我有一个div

<div id="MatterRiskControl" runat="server" />

在aspx页面后面的代码中,我登录了如下相关控件

uc = CType(Page.LoadControl("MatterRisk_Probate.ascx"), UserControl)
MatterRiskControl.Controls.Add(uc)

这很好,尽管我有一个文本框,我想在后面的代码中设置文本。在我的ascx页面中,文本框设置如下

<dx:ASPxTextBox ID="MyTextBox" runat="server" />

在ascx页面后面的页面加载代码中,我尝试过这个

MyTextBox.Text = "Some Text Here"

但它并没有设定它。

我不确定如何从aspx代码后面引用TextBox?

谢谢你的帮助!

问题回答

好吧,让我们假设一个UC有一船控件(文本框、复选框),所有这些都很有趣。

简短版本:

公开UC的方法来更改您想要的文本框。

这有“很多”原因,但主要原因是您想要一个支持多个控件实例的设计。

所以,公开公共方法。

说出这个UC来编辑酒店。

        <h3>UC testing page</h3>

        Enter ID to show: 
        <asp:TextBox ID="txtHotelID" runat="server"></asp:TextBox>
        <asp:Button ID="cmdShow" runat="server" Text="Show Hotel"
            CssClass="btn"
            OnClick="cmdShow_Click"
            />
        <br />
        <br />

        <uc1:MyEditHotelC runat="server" 
            ID="MyEditHotelC" />
        <br />

        <div style="clear:both"></div>
        <hr />
        <h3>This page button(s)</h3>
        Enter new hotel text: 
        <asp:TextBox ID="txtMyHotel" runat="server">
        </asp:TextBox>
        <asp:Button ID="cmdChangeHotel" runat="server" Text="Change HotelName"
            OnClick="cmdChangeHotel_Click"
            />
    </div>

所以,请注意UC。

因此,我们有这样的:

因此,在加州大学,我们这样做:

Public Sub ChangeHotel(strText As String)

    Me.txtHotel.Text = strText

End Sub

请注意,在上面,我们可以对后面表单上的文本框使用相同的控件名称,但txtBox控件在呈现时会被UC更改。

所以,在当前页面中编码。。

Protected Sub cmdChangeHotel_Click(sender As Object, e As EventArgs)

    MyEditHotelC.ChangeHotel(txtMyHotel.Text)

End Sub

因此,请注意我们是如何制作/使用/享受UC的公共方法的,因此在当前页面上,我们可以轻松地抓取/获取/更改文本框控件。

如果您需要读取/使用文本框值,那么您可以制作getter/setter。

所以,上面可能变成这样:

Public Property tHotel
    Get
        Return txtHotel.Text
    End Get

    Set(value)
        txtHotel.Text = value
    End Set
End Property

再说一遍,由于页面上可能存在控件的2或5个副本,那么您要在此处更改文本框的哪个副本?

因此,我可以在页面上更新/更改2个UC的酒店名称,如下所示:

        <uc1:MyEditHotelC runat="server" 
            ID="MyEditHotelC" />
        <br />

        <uc1:MyEditHotelC runat="server" 
            ID="MyEditHotelC2" />
        <br />

所以,现在更改这两家酒店的代码是这样的:

Protected Sub cmdChangeHotel_Click(sender As Object, e As EventArgs)

    MyEditHotelC.tHotel = txtMyHotel.Text
    MyEditHotelC2.tHotel = txtMyHotel.Text

End Sub

因此,如果您只需要获取值,那么在UC代码中创建一个公共函数。

但是,如果您需要获取并设置该文本框,请按照上面的说明公开一个公共属性,然后您可以更改文本。

更令人惊讶的是,这些值在标记中是有效的:

例如:

        <uc1:MyEditHotelC runat="server" 
            ID="MyEditHotelC2"
            tHotel ="ABC"
            />

那么,就像一个只有一个文本框的网格视图一样?好吧,当你有10行时,你要处理文本框的哪个实例?

UC也是如此。如果你的页面上有5个,你会得到哪个文本框,抓取,然后更改?

因此,将Text hotel框的多个实例分开的唯一真正方法是公开每个控件的getter和setter。

现在,你当然可以在客户端JavaScript中获得控制权,并对其进行更改,但就目前而言,这篇文章有点长,上面的内容应该有助于提供一些我认为效果相当好的方法的好例子。





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Transaction handling with TransactionScope

I am implementing Transaction using TransactionScope with the help this MSDN article http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx I just want to confirm that is ...

System.Web.Mvc.Controller Initialize

i have the following base controller... public class BaseController : Controller { protected override void Initialize(System.Web.Routing.RequestContext requestContext) { if (...

Microsoft.Contracts namespace

For what it is necessary Microsoft.Contracts namespace in asp.net? I mean, in what cases I could write using Microsoft.Contracts;?

Separator line in ASP.NET

I d like to add a simple separator line in an aspx web form. Does anyone know how? It sounds easy enough, but still I can t manage to find how to do it.. 10x!

热门标签