Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP:Net中继器控件上的ClientSideEvents_C#_Asp.net_Repeater - Fatal编程技术网

C# ASP:Net中继器控件上的ClientSideEvents

C# ASP:Net中继器控件上的ClientSideEvents,c#,asp.net,repeater,C#,Asp.net,Repeater,我正在中继器中创建一个文本框控件。以下是.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.T

我正在中继器中创建一个文本框控件。以下是.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在另一个文本框上触发,但在repeater控件中,它不起作用。

使用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 + "');");
        }
    }

如果您不想在codebehind中执行此操作,那么可以使用jquery,这会容易得多

$'.txtbox'.changefunction{ 警报$this.val; };

只需将cssclass“txtbox”交给您的文本框即可。

这种不引人注目的方法怎么样


我的错误。ClientSideEvents仅适用于DevXPress控件,不适用于标准ASP.Net控件。感谢Talha,我使用..属性。添加。。。和myText.ClientSideEvents.textchangedno不完全相同;但这很有帮助。谢谢
<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>