Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

findcontrol inside a form template

Îåêßíçóå áðü ôï ìÝëïò tmarkou. Τελευταία δημοσίευση από το μέλος Markos στις 28-02-2012, 20:47. Υπάρχουν 7 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  21-02-2012, 21:02 69396

    findcontrol inside a form template

    Καλησπέρα.

    Το σενάριο που θέλω να πετύχω είναι το εξής :
    Μέσα σε ένα form template ενός radgridcontrol έχω ένα radcombobox οπου η επιλογή της τιμής γίνεται με checkbox. Οπότε μπορώ να επιλέξω παραπάνω από μία τιμή.
    Επίσης υπάρχει και ένα button που σαν αποστολή έχει στη code behind της σελίδας να φέρει όλες τις τιμές.

    Το σενάριο αυτό παίζει μια χαρά όταν τα control είναι πάνω σε μια .aspx σελίδα.
    π.χ.

    test.aspx

    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Test.aspx.vb" Inherits="Test" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">

        <style type="text/css">
            .qsfButtonBigger
            {
                display: block !important;
                margin: 2em 0;
            }
           
            .module
            {
                margin-bottom: 1em;
            }
        </style>
    </head>
    <body class="BODY">
    <form runat="server" id="mainForm" method="post">
        <telerik:RadScriptManager runat="server" ID="RadScriptManager1" />

          
        <div class="title">Selected multiple book genres:</div>
        <telerik:RadAjaxPanel runat="server" ID="RadAjaxPanel1">
            <div class="list-panel">


                <telerik:RadComboBox ID="RadComboBox1" runat="server" CheckBoxes="true"
                    EnableCheckAllItemsCheckBox="true" Width="300px"   >
                    <Items>
                        <telerik:RadComboBoxItem Text="Arts" />
                        <telerik:RadComboBoxItem Text="Biographies" />
                        <telerik:RadComboBoxItem Text="Children's Books" />
                        <telerik:RadComboBoxItem Text="Computers � Internet" />
                        <telerik:RadComboBoxItem Text="Cooking" />
                        <telerik:RadComboBoxItem Text="History" />
                        <telerik:RadComboBoxItem Text="Fiction" />
                        <telerik:RadComboBoxItem Text="Mystery" />
                        <telerik:RadComboBoxItem Text="Nonfiction" />
                        <telerik:RadComboBoxItem Text="Romance" />
                        <telerik:RadComboBoxItem Text="Science Fiction " />
                        <telerik:RadComboBoxItem Text="Travel" />
                    </Items>
                </telerik:RadComboBox>
                   
                <asp:Button
                ID="Button1" runat="server"
                Text="Get Checked Items" CssClass="qsfButtonBigger"
                OnClick="Button1_Click" />
                       
                <div class="module">
                    <strong>Checked Items:</strong>
                    <br /><br />
                    <asp:Label ID="itemsClientSide" runat="server" BorderStyle="None" CssClass="text" />
                </div>
            </div>
        </telerik:RadAjaxPanel>
           

    </form>
    </body>
    </html>


    test.aspx.vb


    Imports System
    Imports System.Collections.Generic
    Imports System.Web.UI.WebControls
    Imports Telerik.Web.UI
    Partial Public Class Test
        Inherits System.Web.UI.Page
        Private Shared Sub ShowCheckedItems(ByVal comboBox As RadComboBox, ByVal label As Label)
            Dim sb As New StringBuilder()
            Dim collection As IList(Of RadComboBoxItem) = comboBox.CheckedItems

            For Each item As RadComboBoxItem In collection
                sb.Append(item.Text + "<br />")
            Next

            label.Text = sb.ToString()

        End Sub
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
            ShowCheckedItems(RadComboBox1, itemsClientSide)
        End Sub
    End Class


    Το πρόβλημα μου είναι οτι δεν μπορώ να <δω> τα controls που εχώ μέσα στην form template σελίδα του radgridcontrol ώστε να εχω το ίδιο αποτέλεσμα με το παραπάνω.

                            <FormTemplate>
                                <table>
                                      <telerik:RadComboBox ID="RadComboBox1" runat="server" CheckBoxes="true"
                                          EnableCheckAllItemsCheckBox="true" Width="300px"   >
                                         <Items>
                                             <telerik:RadComboBoxItem Text="Arts" />
                                             <telerik:RadComboBoxItem Text="Biographies" />
                                             <telerik:RadComboBoxItem Text="Children's Books" />
                                             <telerik:RadComboBoxItem Text="Computers � Internet" />
                                             <telerik:RadComboBoxItem Text="Cooking" />
                                             <telerik:RadComboBoxItem Text="History" />
                                             <telerik:RadComboBoxItem Text="Fiction" />
                                             <telerik:RadComboBoxItem Text="Mystery" />
                                             <telerik:RadComboBoxItem Text="Nonfiction" />
                                             <telerik:RadComboBoxItem Text="Romance" />
                                             <telerik:RadComboBoxItem Text="Science Fiction " />
                                             <telerik:RadComboBoxItem Text="Travel" />
                                          </Items>
                                        </telerik:RadComboBox>
                   
                                        <asp:Button
                                                ID="Button1" runat="server" Text="Get Checked Items" CssClass="qsfButtonBigger" OnClick="Button1_Click" />
                       
                                        <div class="module">
                                              <strong>Checked Items:</strong>
                                              <br /><br />
                                              <asp:Label ID="itemsClientSide" runat="server" BorderStyle="None" CssClass="text" />
                                         </div>
                                   </tr>
                                </table>
                             </FormTemplate>

    Παρακαλω για την βοηθεια σας.

    Ευχαριστώ εκ των προτέρων.



    Δημοσίευση στην κατηγορία:
  •  22-02-2012, 14:01 69400 σε απάντηση της 69396

    Απ: findcontrol inside a form template

    Καλησπέρα.
    Δεν υπάρχει κανένας να βοηθήσει στο παραπάνω πρόβλημα ???

    Οποιος μπορεί σας παρακαλώ ας βοηθήσεις. Ειναι επείγον.

    Ευχαριστώ πολύ.Sad

    Δημοσίευση στην κατηγορία:
  •  22-02-2012, 14:51 69402 σε απάντηση της 69400

    Απ: findcontrol inside a form template

    Θα πρέπει να αλλάξεις λίγο τον κώδικα σου:
    Στο markup θα ορίσεις το CommandName στο Button
    <asp:Button ID="Button1" runat="server" Text="Get Checked Items" CssClass="qsfButtonBigger" CommandName="Button1Action" />
    Στο code behind, θα χρησιμοποιήσεις το παρακάτω event του RadGrid:
    Private Sub RadGrid1_ItemCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles RadGrid1.ItemCommand
        Select Case e.CommandName
            Case "Button1Action"
                .... 'Εδώ γράφεις τον κώδικα του Button1_Click
            Case "Button2Action"
                ....
        End Select
    End Sub
    Όπως θα δεις το signature της συνάρτησης είναι διαφορετικό. Στο e θα βρεις διάφορες extra πληροφορίες που θα σε βοηθήσουν. Για να βρεις τα controls που θέλεις για το row που βρίσκεται το button θα χρησιμοποιήσεις το e.Item.FindControl("ControlIDNameHere").



    Τάσος Καραγιάννης

    Baby debugging steps...
  •  22-02-2012, 18:05 69407 σε απάντηση της 69402

    Απ: findcontrol inside a form template

    Σε  ευχαριστώ πολύ για την απάντηση.

    Να σαι καλά.


  •  24-02-2012, 14:17 69439 σε απάντηση της 69407

    Απ: findcontrol inside a form template

    tmarkou:
    Σε  ευχαριστώ πολύ για την απάντηση.

    Να σαι καλά.





    Σε συνέχεια του προηγούμενου εχω τα εξής :

    Χρησιμοποιώ αυτη την ρουτινα για να γεμίσω ενα radcombobox στο οποίο μπορώ να κανω πολλαπλές επιλογές
    μιας και καθε επιλογή έχει και checkbox.

    Protected Sub RadComboBox1_ItemsRequested(ByVal o As Object, ByVal e As RadComboBoxItemsRequestedEventArgs)

            Dim data As DataTable = GetData(e.Text)
            Dim comboBox As RadComboBox = DirectCast(o, RadComboBox)
            ' Clear the default Item that has been re-created from ViewState at this point.
            comboBox.Items.Clear()

            Dim text As String = e.Text

            If text <> "" Then
                If Len(text) >= 3 Then

                    Dim rows As DataRow() = data.[Select]("newprd LIKE '" + "%" + text + "%'")

                    Dim itemsPerRequest As Integer = 20
                    Dim itemOffset As Integer = e.NumberOfItems
                    Dim endOffset As Integer = itemOffset + itemsPerRequest
                    If endOffset > rows.Length Then
                        endOffset = rows.Length
                    End If

                    Dim i As Integer = itemOffset
                    While i < endOffset
                        comboBox.Items.Add(New RadComboBoxItem(rows(i)("newprd").ToString()))
                        System.Math.Max(System.Threading.Interlocked.Increment(i), i - 1)
                    End While

                    e.Message = [String].Format("Items <b>1</b>-<b>{0}</b> out of <b>{1}</b>", endOffset, rows.Length)

                End If
            End If
        End Sub


        Private Function GetData(ByVal text As String) As DataTable

            If text <> "" Then

                If Len(text) >= 3 Then

                    Dim seq As String = " SELECT prdcode,prdtext " + _
                                        " FROM Products " + _
                                        " where " + _
                                        " prdtext like '" + "%" + Trim(text) + "%" + "'" + _
                                        " order by prdcode "

                    Dim adapter As New SqlDataAdapter(seq, ConfigurationManager.ConnectionStrings("P2OPubConnectionString").ConnectionString)

                    Dim data As New DataTable()
                    adapter.Fill(data)

                    Return data

                End If

            End If

        End Function

    Στην aspx εχω το radcombobox μέσα σε form template ως εξής :

                    <FormTemplate>
                                        <td class="style29">
                                            <telerik:RadComboBox
                                                ID="RadComboBox1" runat="server" Filter="Contains" ItemsPerRequest="20" EnableVirtualScrolling="true" CheckBoxes="true"
                                                Width="350px" Height="200px"  Font-Size="X-Small" Font-Names="verdana"
                                                ShowMoreResultsBox="True" EnableLoadOnDemand="True"
                                                OnItemsRequested="RadComboBox1_ItemsRequested"
                                                style="margin: 20px auto; display:block !important;" />
                   
                                            <asp:Button ID="Button1" runat="server" Text="Get Checked Items" CssClass="qsfButtonBigger" commandname="Button1Action" />
                                                <br />
                                            <asp:Label ID="itemsClientSide" runat="server" BorderStyle="None" CssClass="text" />
                                        </td>
                    <Formtemplate />

    Στο code behind στο commandname = "Button1Action" πρεπει να δημιουργηθει η ρουτίνα που θα διαβάσει τις τιμές από το combobox.


        Protected Sub radKOMPASS_ItemCommand(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles radKOMPASS.ItemCommand
            Select Case e.CommandName

                Case "Button1Action"

                    Dim cb As RadComboBox = e.Item.FindControl("RadComboBox1")
           
            --------------------------------------------------------------

            End Select
        End Sub


    Αυτό που προσπαθώ είναι να φτιάξω μια ρουτίνα (φαντάζομαι loop) που να διαβάζει τις επιλογές που έχω κλικαρει.

    Σας  παρακαλώ για βοήθεια.

    Ευχαριστώ εκ των προτέρων.



    Δημοσίευση στην κατηγορία:
  •  26-02-2012, 19:42 69456 σε απάντηση της 69439

    Απ: findcontrol inside a form template

    tmarkou:
    tmarkou:
    Σε  ευχαριστώ πολύ για την απάντηση.

    Να σαι καλά.





    Σε συνέχεια του προηγούμενου εχω τα εξής :

    Χρησιμοποιώ αυτη την ρουτινα για να γεμίσω ενα radcombobox στο οποίο μπορώ να κανω πολλαπλές επιλογές
    μιας και καθε επιλογή έχει και checkbox.

    Protected Sub RadComboBox1_ItemsRequested(ByVal o As Object, ByVal e As RadComboBoxItemsRequestedEventArgs)

            Dim data As DataTable = GetData(e.Text)
            Dim comboBox As RadComboBox = DirectCast(o, RadComboBox)
            ' Clear the default Item that has been re-created from ViewState at this point.
            comboBox.Items.Clear()

            Dim text As String = e.Text

            If text <> "" Then
                If Len(text) >= 3 Then

                    Dim rows As DataRow() = data.[Select]("newprd LIKE '" + "%" + text + "%'")

                    Dim itemsPerRequest As Integer = 20
                    Dim itemOffset As Integer = e.NumberOfItems
                    Dim endOffset As Integer = itemOffset + itemsPerRequest
                    If endOffset > rows.Length Then
                        endOffset = rows.Length
                    End If

                    Dim i As Integer = itemOffset
                    While i < endOffset
                        comboBox.Items.Add(New RadComboBoxItem(rows(i)("newprd").ToString()))
                        System.Math.Max(System.Threading.Interlocked.Increment(i), i - 1)
                    End While

                    e.Message = [String].Format("Items <b>1</b>-<b>{0}</b> out of <b>{1}</b>", endOffset, rows.Length)

                End If
            End If
        End Sub


        Private Function GetData(ByVal text As String) As DataTable

            If text <> "" Then

                If Len(text) >= 3 Then

                    Dim seq As String = " SELECT prdcode,prdtext " + _
                                        " FROM Products " + _
                                        " where " + _
                                        " prdtext like '" + "%" + Trim(text) + "%" + "'" + _
                                        " order by prdcode "

                    Dim adapter As New SqlDataAdapter(seq, ConfigurationManager.ConnectionStrings("P2OPubConnectionString").ConnectionString)

                    Dim data As New DataTable()
                    adapter.Fill(data)

                    Return data

                End If

            End If

        End Function

    Στην aspx εχω το radcombobox μέσα σε form template ως εξής :

                    <FormTemplate>
                                        <td class="style29">
                                            <telerik:RadComboBox
                                                ID="RadComboBox1" runat="server" Filter="Contains" ItemsPerRequest="20" EnableVirtualScrolling="true" CheckBoxes="true"
                                                Width="350px" Height="200px"  Font-Size="X-Small" Font-Names="verdana"
                                                ShowMoreResultsBox="True" EnableLoadOnDemand="True"
                                                OnItemsRequested="RadComboBox1_ItemsRequested"
                                                style="margin: 20px auto; display:block !important;" />
                   
                                            <asp:Button ID="Button1" runat="server" Text="Get Checked Items" CssClass="qsfButtonBigger" commandname="Button1Action" />
                                                <br />
                                            <asp:Label ID="itemsClientSide" runat="server" BorderStyle="None" CssClass="text" />
                                        </td>
                    <Formtemplate />

    Στο code behind στο commandname = "Button1Action" πρεπει να δημιουργηθει η ρουτίνα που θα διαβάσει τις τιμές από το combobox.


        Protected Sub radKOMPASS_ItemCommand(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles radKOMPASS.ItemCommand
            Select Case e.CommandName

                Case "Button1Action"

                    Dim cb As RadComboBox = e.Item.FindControl("RadComboBox1")
           
            --------------------------------------------------------------

            End Select
        End Sub


    Αυτό που προσπαθώ είναι να φτιάξω μια ρουτίνα (φαντάζομαι loop) που να διαβάζει τις επιλογές που έχω κλικαρει.

    Σας  παρακαλώ για βοήθεια.

    Ευχαριστώ εκ των προτέρων.





    Επειδή βλέπω ότι κανένας δεν απάντησε στο ερωτημα μου και ισως να φταιω εγω σε αυτό, θα ήθελα να κάνω clear ότι αυτό που ζητώ είναι
    ο τροπος που θα διαβασω τις τιμές που θα έχει το radcombobox με τα checkboxes. 

        Protected Sub radKOMPASS_ItemCommand(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles radKOMPASS.ItemCommand
            Select Case e.CommandName

                Case "Button1Action"

                    Dim cb As RadComboBox = e.Item.FindControl("RadComboBox1")
           
                       [κώδικας για radcombobox]

            End Select
        End Sub


    Σας ευχαριστώ και πάλι εκ των προτέρων.

    Δημοσίευση στην κατηγορία:
  •  28-02-2012, 10:46 69461 σε απάντηση της 69456

    Απ: findcontrol inside a form template

    tmarkou:
    tmarkou:
    tmarkou:
    Σε  ευχαριστώ πολύ για την απάντηση.

    Να σαι καλά.





    Σε συνέχεια του προηγούμενου εχω τα εξής :

    Χρησιμοποιώ αυτη την ρουτινα για να γεμίσω ενα radcombobox στο οποίο μπορώ να κανω πολλαπλές επιλογές
    μιας και καθε επιλογή έχει και checkbox.

    Protected Sub RadComboBox1_ItemsRequested(ByVal o As Object, ByVal e As RadComboBoxItemsRequestedEventArgs)

            Dim data As DataTable = GetData(e.Text)
            Dim comboBox As RadComboBox = DirectCast(o, RadComboBox)
            ' Clear the default Item that has been re-created from ViewState at this point.
            comboBox.Items.Clear()

            Dim text As String = e.Text

            If text <> "" Then
                If Len(text) >= 3 Then

                    Dim rows As DataRow() = data.[Select]("newprd LIKE '" + "%" + text + "%'")

                    Dim itemsPerRequest As Integer = 20
                    Dim itemOffset As Integer = e.NumberOfItems
                    Dim endOffset As Integer = itemOffset + itemsPerRequest
                    If endOffset > rows.Length Then
                        endOffset = rows.Length
                    End If

                    Dim i As Integer = itemOffset
                    While i < endOffset
                        comboBox.Items.Add(New RadComboBoxItem(rows(i)("newprd").ToString()))
                        System.Math.Max(System.Threading.Interlocked.Increment(i), i - 1)
                    End While

                    e.Message = [String].Format("Items <b>1</b>-<b>{0}</b> out of <b>{1}</b>", endOffset, rows.Length)

                End If
            End If
        End Sub


        Private Function GetData(ByVal text As String) As DataTable

            If text <> "" Then

                If Len(text) >= 3 Then

                    Dim seq As String = " SELECT prdcode,prdtext " + _
                                        " FROM Products " + _
                                        " where " + _
                                        " prdtext like '" + "%" + Trim(text) + "%" + "'" + _
                                        " order by prdcode "

                    Dim adapter As New SqlDataAdapter(seq, ConfigurationManager.ConnectionStrings("P2OPubConnectionString").ConnectionString)

                    Dim data As New DataTable()
                    adapter.Fill(data)

                    Return data

                End If

            End If

        End Function

    Στην aspx εχω το radcombobox μέσα σε form template ως εξής :

                    <FormTemplate>
                                        <td class="style29">
                                            <telerik:RadComboBox
                                                ID="RadComboBox1" runat="server" Filter="Contains" ItemsPerRequest="20" EnableVirtualScrolling="true" CheckBoxes="true"
                                                Width="350px" Height="200px"  Font-Size="X-Small" Font-Names="verdana"
                                                ShowMoreResultsBox="True" EnableLoadOnDemand="True"
                                                OnItemsRequested="RadComboBox1_ItemsRequested"
                                                style="margin: 20px auto; display:block !important;" />
                   
                                            <asp:Button ID="Button1" runat="server" Text="Get Checked Items" CssClass="qsfButtonBigger" commandname="Button1Action" />
                                                <br />
                                            <asp:Label ID="itemsClientSide" runat="server" BorderStyle="None" CssClass="text" />
                                        </td>
                    <Formtemplate />

    Στο code behind στο commandname = "Button1Action" πρεπει να δημιουργηθει η ρουτίνα που θα διαβάσει τις τιμές από το combobox.


        Protected Sub radKOMPASS_ItemCommand(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles radKOMPASS.ItemCommand
            Select Case e.CommandName

                Case "Button1Action"

                    Dim cb As RadComboBox = e.Item.FindControl("RadComboBox1")
           
            --------------------------------------------------------------

            End Select
        End Sub


    Αυτό που προσπαθώ είναι να φτιάξω μια ρουτίνα (φαντάζομαι loop) που να διαβάζει τις επιλογές που έχω κλικαρει.

    Σας  παρακαλώ για βοήθεια.

    Ευχαριστώ εκ των προτέρων.





    Επειδή βλέπω ότι κανένας δεν απάντησε στο ερωτημα μου και ισως να φταιω εγω σε αυτό, θα ήθελα να κάνω clear ότι αυτό που ζητώ είναι
    ο τροπος που θα διαβασω τις τιμές που θα έχει το radcombobox με τα checkboxes. 

        Protected Sub radKOMPASS_ItemCommand(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles radKOMPASS.ItemCommand
            Select Case e.CommandName

                Case "Button1Action"

                    Dim cb As RadComboBox = e.Item.FindControl("RadComboBox1")
           
                       [κώδικας για radcombobox]

            End Select
        End Sub


    Σας ευχαριστώ και πάλι εκ των προτέρων.




    Καλημέρα.

    Δεν υπάρχει κάποιος, please να με βοηθήσει με το παραπάνω πρόβλημα ???

    Thanks.

     


    Δημοσίευση στην κατηγορία:
  •  28-02-2012, 20:47 69467 σε απάντηση της 69461

    Απ: findcontrol inside a form template

    Γενικά, για να απαντήσει κανείς θα πρέπει να χρησιμοποιεί το εν λόγω control. Εγώ, για παράδειγμα, δεν το χρησιμοποιώ. Έπεσα, όμως, πάνω σ' αυτό το post που πιθανόν να απαντάει στο ερώτημά σου.

    [UPDATE]

    Μάλιστα, αν δώσεις στο Google "Multiple Selection in RadComboBox" θα έρθουν πολλά ενδιαφέροντα αποτελέσματα. Ένα από αυτά πρέπει να είναι και αυτό.

    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems