Repeater 中TextBox 触发TextChanged事件

两种方法

1.TextBox 绑定TextChanged 并设置AutoPostBack ="true" ,如果不设置AutoPostBack ="true"则不会触发TextChanged事件,然后在对应的方法里面循环Repeater查找改变项

部分代码

<ItemTemplate >
    <tr>
        <td style ="width :9%;"><%#Eval("Date")%> <asp:HiddenField ID ="hfkey" runat ="server" Value =‘<%#Eval("ID")%> ‘ /></td>
        <td style ="width :9%;"><%#Eval("FBASalesDays")%></td>
        <td style ="width :9%;"><asp:TextBox ID ="txtUPSShipQty"  runat="server" Text =‘<%#Eval("UPSShipQty")%>‘ AutoPostBack ="true"   OnTextChanged ="btnCal_Click" ></asp:TextBox> </td>
    </tr>
    </ItemTemplate>

后台部分代码

protected void btnCal_Click(object sender, EventArgs e)
        {

            foreach (RepeaterItem item in rpdList.Items)
            {
                if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
                {
                    HiddenField hfkey = item.FindControl("hfkey") as HiddenField;

                    TextBox txtUPSShipQty = item.FindControl("txtUPSShipQty") as TextBox;

                    DataRow[] rows = dt.Select("ID =‘" + hfkey.Value + "‘");

                    if (rows != null && rows.Length > 0)
                    {

                        if (rows[0]["UPSShipQty"].ToString().Trim() != txtUPSShipQty.Text.Trim())
                        {
                            rows[0]["UPSShipQty"] = txtUPSShipQty.Text.Trim();

                            CalFBAShipQty2(dt, 3, "UPSShipQty", hfkey.Value.Trim());
                            break;
                        }

                    }
                }
            }
            rpdList.DataSource = dt;
            rpdList.DataBind();
        }

2.让TextBox 触发Repeater 的ItemCommand事件,同样需要绑定TextChanged 并设置AutoPostBack ="true",然后在TextChanged事件中调用ItemCommand

HTML

<asp:Repeater ID="Repeater1" runat="server"
  onitemcommand="Repeater1_ItemCommand">
<ItemTemplate>
<%#Eval("txt") %><table>
    <tr>
        <td>
            <asp:TextBox ID="TextBox1" runat="server" AutoPostBack="true" OnTextChanged="TextBox1_TextChanged"></asp:TextBox>
        </td>
        <td>
            <asp:Button ID="Button1" runat="server" Text="Button"  />
        </td>
        <td>
            <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="true"/>
        </td>
    </tr></table>
</ItemTemplate>
</asp:Repeater>

后台代码

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("id");
        dt.Columns.Add("txt");
        dt.Rows.Add("1", "1txt");
        dt.Rows.Add("2", "2txt");
        Repeater1.DataSource = dt;
        Repeater1.DataBind();
    }
}
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
    //注意这里的参数设置
    RepeaterCommandEventArgs e1 = new RepeaterCommandEventArgs(((TextBox)sender).NamingContainer as RepeaterItem,sender,new CommandEventArgs("test",null));
    Repeater1_ItemCommand(Repeater1, e1);
}
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    string ss = e.CommandName;
    if (ss == "test")
        Response.Write("123");
}

参考:http://bbs.csdn.net/topics/350011338

时间: 2024-08-10 20:41:55

Repeater 中TextBox 触发TextChanged事件的相关文章

WPF中TextBox的PreviewMouseLeftButtonUp事件

当使用TextBox的PreviewMouseLeftButtonUp事件时(例如,鼠标点击进入TextBox时,清除当前的输入内容),会很意外地发现,这时候不论怎么点击都无法点击到其他控件,焦点一直被文本框占用着. 解决办法及测试用例如下: 界面 1 <Window x:Class="learnwpf.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

ALV TREE中双击触发PAI事件的方法

用事件类实现双击事件,实例化后使用set handler注册到ALV对象.红字部分为事件方法的具体实现. 代码如下 CLASS lcl_tree_event_receiver DEFINITION.  PUBLIC SECTION.    METHODS handle_node_double_click                  FOR EVENT node_double_click OF cl_gui_alv_tree      IMPORTING node_key sender.EN

循环repeater中的textbox,相加

循环repeater中textbox的值,并相加 var num = 0; function txt_change() { $.each($("input:text[id*='txtgs']"), function (index, item) { $(item).bind("keyup", function () { $.each($("input:text[id*='txtgs']"), function (index, item) { if

在GridView控件内文本框实现TextChanged事件

本篇是教你实现GridView控件内的TextBox文本框实现自身的TextChanged事件.由于某些功能的需求,GridView控件内嵌TextBox,当TextBox值发生变化时,触发TextChanged事件. 在.aspx网页内,Insus.NET尝试写一个GridView,算了,我们还想在Ajax环境之下运行: 为了实现TextChanged事件,得需要在GridView控件中写OnRowCreated事件,记住是OnRowCreated事件,而不是OnRowDataBound事件.

asp.net中TextBox里面实现回车触发指定事件

原文:asp.net中TextBox里面实现回车触发指定事件 我在一个user_top用户控件里面做了个包括搜索的功能.然后再一个页面中添加这个用户控件.浏览时候在textbox里面输入搜索内容后.下意识的摁了回车.谁知道报错了.因为页面回发.我在page_load里面写了!IsPostBack{...}所以导致了未将对象引入对象实例.网上搜了下. 方法一: <asp:Panel ID="panSearch" runat="server" DefaultBut

Repeater控件中触发按钮事件出现System.ArgumentException: 回发或回调参数无效。在配置中使用 &lt; pages enableEventValidation=&quot;true&quot;/&gt;

今天,在Repeater控件中添加了一个按钮,可是在执行时确提示 System.ArgumentException: 回发或回调参数无效.在配置中使用 < pages enableEventValidation="true"/> <asp:Repeater ID="rpList" runat="server" OnItemCommand="rpList_ItemCommand"> <ItemTem

关于ASP.net TextBox控件的失去焦点后触发其它事件

编写人:CC阿爸 2015-2-02 今天在这里,我想与大家一起分享如何处理的ASP.net TextBox控件的失去焦点后触发其它事件的问题,在此做个小结,以供参考.有兴趣的同学,可以一同探讨与学习一下,否则就略过吧. 1.首先弄清楚问题,asp.net 2.0服务器控件没有onBlur.因此我们第一个方法是采用 OnTextChanged 来处理有一点要注意,txtVen的autopostback要设置为true.<asp:TextBox ID="txtVen" runat=

Wpf TextChanged事件导致死循环,事件触发循环问题

1.实例: 说明:当TextBox控件的Text内容发生变化时,TextChanged事件触发,并且会立即同步执行. 基于这个特点,设置一个全局变量标识,ChangeTxtB,如果是正在修改txtB的时候,不执行txt_TextChanged事件内容. 这样就可以解决TextChanged事件带来的死循环问题. //比特 private void txtb_TextChanged(object sender, TextChangedEventArgs e) { if (ChangeTxtB) /

DICOM:剖析Orthanc中的Web Server,Mongoose之“连接请求触发的事件序列”(二)

背景: Orthanc是本专栏中介绍过的一款新型DICOM服务器,具有轻量级.支持REST的特性,可将任意运行Windows和Linux系统的计算机变成DICOM服务器,即miniPACS.Orthanc内嵌多种模块,数据库管理简单,且不依赖于第三方软件.因此通过剖析Orthanc源码可以学习到搭建DICOM系统中的各个环节,例如SQLite嵌入型数据库.GoogleLog日志库.DCMTK医学DICOM库,以及近期要介绍的开源Web Server,Mongoose. 题记: 近期计划参照官网剖