Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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
Asp.net 确定哪个控件在listview中触发事件_Asp.net_.net_Telerik_Telerik Ajax - Fatal编程技术网

Asp.net 确定哪个控件在listview中触发事件

Asp.net 确定哪个控件在listview中触发事件,asp.net,.net,telerik,telerik-ajax,Asp.net,.net,Telerik,Telerik Ajax,我在telerik论坛上问过这个问题,但有时在那里的反应会很慢。我想知道这里是否有人知道该怎么做 我所处的情况是,用户将有一个可变数量的项目,在每个项目旁边,我想要一个RadNumericTextBox。我正在考虑使用RadListView并将模板设置为项目名称和与之关联的RadNumericTextBox。我想忽略RadListView的编辑、创建和更高级的功能。我只想要一个带有输入框的项目列表,当用户更改值时,这些输入框将自动发回 我面临的问题是,当用户更改文本框中的数字时,我如何知道这是哪

我在telerik论坛上问过这个问题,但有时在那里的反应会很慢。我想知道这里是否有人知道该怎么做

我所处的情况是,用户将有一个可变数量的项目,在每个项目旁边,我想要一个RadNumericTextBox。我正在考虑使用RadListView并将模板设置为项目名称和与之关联的RadNumericTextBox。我想忽略RadListView的编辑、创建和更高级的功能。我只想要一个带有输入框的项目列表,当用户更改值时,这些输入框将自动发回

我面临的问题是,当用户更改文本框中的数字时,我如何知道这是哪个文本框?我想看看RadNumericTextBox上是否有一个属性可以保存任意值,比如我的项目键,这样我就可以知道它们更改了哪个数字。但是,我没有看到这样的属性

是否有某种方法可以确定在我自动发回时他们编辑了哪个文本框


如果有人询问,我不想强制用户单击按钮使行进入编辑模式,更改数字,然后单击按钮保存行。

您可以使用
中继器
控件执行此操作

在中继器的项目模板中包括一个
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 

}