C# ASP:Net中继器控件上的ClientSideEvents
我正在中继器中创建一个文本框控件。以下是.cs代码: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
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>