如何获得放置在一个中继器中的html文本框的值.净后台代码

本文关键字:文本 html 代码 后台 中继器 一个 何获得 | 更新日期: 2023-09-27 18:13:33

我有一个中继器,它在ItemTemplate中包含一个文本框(html)。

我不能创建一个asp文本框,因为有问题的文本框需要通过jQuery访问,以便用户操作文本框。

一旦用户完成,在各自的中继器行中按下asp按钮,我想通过后面的代码(c#)获得用户输入文本框的值。

谁能告诉我这是可能的吗?如果是这样,可以建议一些代码吗?

否则,有任何非ajax的替代方案吗?

如何获得放置在一个中继器中的html文本框的值.净后台代码

在jQuery中引用asp.net组件没有问题。关于这个需要知道的一些事情:

  1. 项目将有一个包含您最初给控件的id值的id。使用当前的编码方案(我无法想象微软会对其做出重大改变),HTML中的<asp:TextBox ID="txtBox" runat="server" />变成了<input id="...._txtBox" name="...$txtBox" />。像:$(input[id$=txtBox])这样的jQuery选择器会找到它。
  2. 因为asp控件最终解析为良好的旧HTML表单元素,所以您完全像直接创建的HTML元素一样对待它们。在这种情况下,你可以使用伪类disabled来启用/禁用它。
  3. 我通过查看我的网页生成的源代码,看看发生了什么,了解了很多这一点。我喜欢带有Web开发者工具栏和View Generated Source命令的FireFox。

应该可以了。如果你需要进一步的解释,请告诉我。

把它放在你的aspx页面:

<form id="form1" runat="server">
<div>
<asp:Repeater ID="rptHtmlTag" runat="server">
        <ItemTemplate>
            <input id="htmlTextBox" runat="server" />
        </ItemTemplate>
</asp:Repeater>
</div>
<asp:Button ID="btnSubmit" runat="server" Text="Submit" />
</form>

把它放在你的代码后面:

protected override void OnInit(EventArgs e)
{
    this.rptHtmlTag.ItemDataBound += new RepeaterItemEventHandler(rptHtmlTag_ItemDataBound);
    this.btnSubmit.Click += new EventHandler(btnSubmit_Click);
    base.OnInit(e);
}
void btnSubmit_Click(object sender, EventArgs e)
{
    foreach (RepeaterItem item in this.rptHtmlTag.Items)
    {
        HtmlInputText htmlTextBox = (HtmlInputText)item.FindControl("htmlTextBox");
        string THIS_IS_YOUR_VALUE = htmlTextBox.Value;
    }
}
void rptHtmlTag_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        HtmlInputText htmlTextBox = (HtmlInputText )e.Item.FindControl("htmlTextBox");
        htmlTextBox.Value = String.Concat("Some Value - Index", e.Item.ItemIndex);
    }
}
protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        List<int> repeaterPopulator = new List<int> { 1, 2, 3 };
        this.rptHtmlTag.DataSource = repeaterPopulator;
        this.rptHtmlTag.DataBind();
    }
}