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

リピーターコントロールの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 に答える