Asp.net 确定哪个控件在listview中触发事件
我在telerik论坛上问过这个问题,但有时在那里的反应会很慢。我想知道这里是否有人知道该怎么做 我所处的情况是,用户将有一个可变数量的项目,在每个项目旁边,我想要一个RadNumericTextBox。我正在考虑使用RadListView并将模板设置为项目名称和与之关联的RadNumericTextBox。我想忽略RadListView的编辑、创建和更高级的功能。我只想要一个带有输入框的项目列表,当用户更改值时,这些输入框将自动发回 我面临的问题是,当用户更改文本框中的数字时,我如何知道这是哪个文本框?我想看看RadNumericTextBox上是否有一个属性可以保存任意值,比如我的项目键,这样我就可以知道它们更改了哪个数字。但是,我没有看到这样的属性 是否有某种方法可以确定在我自动发回时他们编辑了哪个文本框Asp.net 确定哪个控件在listview中触发事件,asp.net,.net,telerik,telerik-ajax,Asp.net,.net,Telerik,Telerik Ajax,我在telerik论坛上问过这个问题,但有时在那里的反应会很慢。我想知道这里是否有人知道该怎么做 我所处的情况是,用户将有一个可变数量的项目,在每个项目旁边,我想要一个RadNumericTextBox。我正在考虑使用RadListView并将模板设置为项目名称和与之关联的RadNumericTextBox。我想忽略RadListView的编辑、创建和更高级的功能。我只想要一个带有输入框的项目列表,当用户更改值时,这些输入框将自动发回 我面临的问题是,当用户更改文本框中的数字时,我如何知道这是哪
如果有人询问,我不想强制用户单击按钮使行进入编辑模式,更改数字,然后单击按钮保存行。您可以使用
中继器
控件执行此操作
在中继器的项目模板中包括一个RadNumericTextBox
,然后为其编写服务器端事件处理程序。文本框的客户端ID可以通过事件处理程序的sender
对象访问,但如果这还不够信息,您可以依靠中继器的数据源将所需的任何数据与每个文本框关联起来
最简单的方法可能是使用文本框的标签
属性。下面是一个例子:
ASPX:
您可以通过将listview与数据源绑定, 使RadNumericTextBox的id等于要传递的项目密钥。 在RadNumericTextBox TextChanged事件中,将发送方对象强制转换为RadNumericTextBox类型。在这个 您将获得您正在寻找的唯一项目密钥。 例如:
<asp:FormView ID="frmViewPicture" runat="server">
<EditItemTemplate>
<telerik:RadNumericTextBox ID='Eval("ItemKey")'
OnTextChanged="radTxtNewPrice_TextChanged" AutoPostBack="true">
</telerik:RadNumericTextBox>
</EditItemTemplate>
</asp:FormView>
希望这是有帮助的
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
Dim dt As New DataTable
dt.Columns.Add("Column1", GetType(String))
For i As Integer = 1 To 5
Dim row = dt.NewRow
row.Item("Column1") = "TextBox" & i.ToString
dt.Rows.Add(row)
dt.AcceptChanges()
Next
Repeater1.DataSource = dt
Repeater1.DataBind()
End If
End Sub
Private Sub Repeater1_ItemDataBound(sender As Object, e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles Repeater1.ItemDataBound
If (e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem) Then
Dim tb As RadNumericTextBox = e.Item.FindControl("radNTB")
tb.Label = DataBinder.Eval(e.Item.DataItem, "Column1").ToString()
End If
End Sub
Public Sub radNTB_TextChanged(sender As Object, e As EventArgs)
Dim ntb As RadNumericTextBox = sender
Response.Write(ntb.Label)
End Sub
<asp:FormView ID="frmViewPicture" runat="server">
<EditItemTemplate>
<telerik:RadNumericTextBox ID='Eval("ItemKey")'
OnTextChanged="radTxtNewPrice_TextChanged" AutoPostBack="true">
</telerik:RadNumericTextBox>
</EditItemTemplate>
</asp:FormView>
protected void radTxtNewPrice_TextChanged(object sender, EventArgs e)
{
Telerik.Web.UI.RadNumericTextBox txtRadNumericTextBox= (Telerik.Web.UI.RadNumericTextBox)sender;
var itemKey = txtRadNumericTextBox.ID;
// Do Your Logic Here
}