1

我正在中继器中创建一个文本框控件。这是.cs代码:

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
    Est estimationItem = (Est)e.Item.DataItem;
    TextBox txtWeekly = (TextBox)e.Item.FindControl("txtWeekly");
    txtWeekly.Text = estimationItem.SMEst.ToString();   
}

这是 .aspx 代码:

<asp:Repeater ID="WeeklyEst" OnItemDataBound="WeeklyEst_ItemDataBound" runat="server">
    <HeaderTemplate>
        <table>
           <tr>
     </HeaderTemplate>
     <ItemTemplate>
         <td>
              <asp:TextBox ID="txtWeekly" runat="server">  
                 <ClientSideEvents OnTextChanged="function(s, e) { alert('AlertIsHere!');}" />
              </asp:TextBox>
         </td>
     </ItemTemplate>
     <FooterTemplate>
             <td>
             </td>
          </tr> 
        </table>
     </FooterTemplate>
</asp:Repeater>

我想做的是在文本框中的文本更改时发出警报。我怎样才能做到这一点?CliendSideEvent 在另一个文本框上触发,但在中继器控制中,它不起作用。

4

3 回答 3

0

使用Repeater控件的ItemDataBound事件,你可以这样做......,如果我理解正确的话

protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if(e.Item.ItemType == ListItemType.Item)
        {
            TextBox mytxt = e.Item.FindControl("txtWeekly") as TextBox;
            // you can just pass "this" instead of "mytxt.ClientID" and get the ID from the DOM element
            mytxt.Attributes.Add("onchange", "doStuff('" + mytxt.ClientID + "');");
        }
    }
于 2012-09-05T07:53:54.470 回答
0

如果您不想在代码隐藏中执行此操作,则可以使用 jquery,这会容易得多

$('.txtbox').change(function() { alert($(this).val()); });

只需将 cssclass 'txtbox' 给您的文本框。

于 2012-09-05T07:59:25.300 回答
0

这种不显眼的方法怎么样

<head runat="server">
    <title></title>
    <script type="text/javascript" src="js/jquery-1.7.1.js" ></script>
    <script type="text/javascript">
        $(document).ready(function () {
            // select all input text ending with txtWeekly as repeater control
            // will create something like rptWeeklyEst$ctl00$txtWeekly
            $('input[name$="txtWeekly"][type=text]').change(function () {
                alert('textbox changed to ' + $(this).val());
            });
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Repeater ID="rptWeeklyEst" runat="server">
            <ItemTemplate>
                <asp:TextBox ID="txtWeekly" runat="server"></asp:TextBox>
            </ItemTemplate>
        </asp:Repeater>
        <br />
        Nope
        <asp:TextBox ID="txtNope" runat="server"></asp:TextBox>
    </div>
    </form>
</body>
于 2012-09-05T09:08:50.447 回答