2

私はtelekフォーラムでこれを尋ねましたが、応答が遅い場合があります. ここで誰かがこれについてどうすればよいか知っているかどうか疑問に思っていました。

ユーザーがさまざまな数のアイテムを持ち、各アイテムの横に RadNumericTextBox が必要な状況にいます。RadListView を使用して、テンプレートをアイテム名とそれに関連付けられた RadNumericTextBox に設定することを考えていました。RadListView の編集、作成、およびより高度な機能は無視したいと思います。ユーザーが値を変更したときに自動的にポストバックされる入力ボックスを含むアイテムのリストが必要です。

私が直面している問題は、ユーザーがテキスト ボックスの数字を変更したときです。これがどのテキスト ボックスかを知るにはどうすればよいですか? RadNumericTextBox に項目キーなどの任意の値を保持できる属性があるかどうかを調べていたので、どの番号が変更されたかがわかります。ただし、そのような属性は表示されません。

自動ポストバックするときに編集したテキスト ボックスを特定する方法はありますか?

誰かが尋ねた場合に備えて、ユーザーにボタンをクリックして行を編集モードにし、番号を変更してから、ボタンをクリックして行を保存するように強制したくありません。

4

2 に答える 2

0

コントロールでこれを行うことができますRepeater

RadNumericTextBoxリピーターのアイテム テンプレートに a を含め、サーバー側のイベント ハンドラーを記述します。テキスト ボックスのクライアント ID には、イベント ハンドラーのオブジェクトからアクセスできますsenderが、それだけの情報では不十分な場合は、リピーターのデータ ソースを利用して、必要なデータを各テキスト ボックスに関連付けることができます。

最も簡単な方法Labelは、テキスト ボックスの属性を使用することです。次に例を示します。

ASPX:

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:Repeater ID="Repeater1" runat="server">    
    <ItemTemplate>
        <br />
        <telerik:RadNumericTextBox ID="radNTB" runat="server" AutoPostBack="true" OnTextChanged="radNTB_TextChanged" ClientIDMode="Predictable"></telerik:RadNumericTextBox>
    </ItemTemplate>
</asp:Repeater>

VB:

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
于 2013-01-17T22:31:48.083 に答える