Modify Textbox Data in Event

9 posts, 0 answers
  1. Brad Perniciaro
    Brad Perniciaro avatar
    45 posts
    Member since:
    Nov 2006

    Posted 17 Jan 2008 Link to this post

    I've been searching around for a way to change the 'Value' of a textbox during the ItemDataBound event, but I'm not seeing any examples.  I am binding to a SQLDataAdapter which calls a stored procedure to load the textboxes, so much of the data is stored in 'bit' column types.  What I need to do is simply change things like bit values '1' or '0' to 'Enabled' and 'Disabled' when the report is generated.

    My first approach was to access the needed Textboxes in the ItemDataBound event and change their 'Text' or 'Value' field based on the appropriate row value.  But, these properties don't exist. 

    Thanks.
  2. Brad Perniciaro
    Brad Perniciaro avatar
    45 posts
    Member since:
    Nov 2006

    Posted 17 Jan 2008 Link to this post

    Ok I'm slightly closer to my goal but still having a problem.  Let me back up and explain what I originally tried.  Based on the example in help, I took an approach similar to this:

    Private Sub detail_ItemDataBound(ByVal sender As Object, ByVal e As System.EventArgs)  
        Dim section As Processing.DetailSection = TryCast(sender, Processing.DetailSection)  
        Dim extraShipping As Processing.ReportItemBase = section.Items.Find("extraShippingCostTextBox", False)(0)  
        Dim row As DataRowView = TryCast(section.DataItem, DataRowView)  
        If Nothing <> row Then  
            Dim val As Object = row.Row("Weight")  
            If Not (TypeOf val Is DBNull) AndAlso (DirectCast(val, Decimal)) > 10 Then  
                extraShipping.Visible = True 
            Else  
                extraShipping.Visible = False 
            End If  
        End If  
    End Sub 

    First off, I kept getting an error on 'If Nothing <> row Then' and had to change it to 'If NOT row is NOTHING Then' in order to get it to compile. 

    Second, I tried to get a reference to my textbox using code similar to:

     Dim extraShipping As Processing.ReportItemBase = section.Items.Find("extraShippingCostTextBox", False)(0)  
     

    However, it was here that I got stuck previously because I could not reference the 'Value' property my textbox analogous to the 'extraShipping' here.  To get around this problem, I found that I could just reference the name of the textbox directly in my code using the name of the element (myTextBox.Value).  This seems to work except for one small detail, the change that I'm applying in my ItemDataBound event never gets applied to the first item in the collection.  Here is my code:

    Private Sub DetailSection1_ItemDataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles DetailSection1.ItemDataBound  
        Dim section As Processing.DetailSection = DirectCast(sender, Processing.DetailSection)  
     
        Dim row As DataRowView = TryCast(section.DataItem, DataRowView)  
        Dim value As Object  
        If Not row Is Nothing Then  
          'Cassette A Out of Service  
          value = row.Row("CassAOutOfService")  
          If CType(value, String) = "False" Then  
            tbCassAState.Value = "Out of Service" 
          End If  
        End If  
      End Sub 

    It seems that when I change the 'Value' property of the TextBox, it gets applied to the next item in the report, not the DataItem that I'm binding to.  So, if I change the Value to 'Out of Service' when I'm processing the 3rd Item in the report, the change is actually made to the 4th Item in the report. 

    I have even tried to port all of my code into the ItemDataBinding event instead, but am experiencing the same phenomena.


    Any advice or direction would be appreciated, thanks.
  3. DevCraft banner
  4. Brad Perniciaro
    Brad Perniciaro avatar
    45 posts
    Member since:
    Nov 2006

    Posted 17 Jan 2008 Link to this post

    I believe I have resolved the problem.  Instead of casting the textbox as a 'ReportItemBase' object like in the example, I cast it as a textbox instead and the 'Text' property becomes visible. I assume that the reason you have to get a reference of the textbox using the Section.Items.Find() is precisely because the reference to the current textbox is already pointing at the next item?
  5. Ivan
    Admin
    Ivan avatar
    519 posts

    Posted 18 Jan 2008 Link to this post

    Hello Brad,

    Thank you for contacting Telerik Support.

    About your first question you can use an expression in the Value property:
    myTextBoxItem.Value = "=IIF(Fields.myData=1,'Enabled','Disabled')";

    If the data field is nullable, then simlpy elaborate some more:
    myTextBoxItem.Value = "=IIF(Fields.myData=1,'Enabled',IIF(Fields.myData=0,'Disabled',''))";

    About the case with ItemDataBound event handler: if you need to change the value of a text box item you should cast to Telerik.Reporting.Processing.TextBox in order to access the Text property. For example:

    private void myTextBox_ItemDataBound(object sender, System.EventArgs e) 
        Telerik.Reporting.Processing.TextBox textBox = 
            sender as Telerik.Reporting.Processing.TextBox; 
        textBox.Text = "some new value"
     
    private void detail_ItemDataBound(object sender, System.EventArgs e) 
        Telerik.Reporting.Processing.DetailSection section = 
            sender as Telerik.Reporting.Processing.DetailSection; 
        Telerik.Reporting.Processing.TextBox textBox = 
            section.Items["MyTextBox"as Telerik.Reporting.Processing.TextBox; 
        textBox.Text = "some new value"

    More information on the available properties you can find in the API Reference topic in the Reporting documentation. For example Telerik.Reporting.Processing.ReportItemBase has an Items property, but Telerik.Reporting.Processing.TextBox has a Text one.

    Please note that Telerik Reporting supports user defined functions as well, which can help in almost any case.

    I hope this information helps.
     

    Regards,
    Ivan
    the Telerik team

    Instantly find answers to your questions at the new Telerik Support Center
  6. Lalit
    Lalit avatar
    2 posts
    Member since:
    Sep 2012

    Posted 27 Apr 2013 Link to this post

    Hi,
    I am using the detail section databound evnet to access all the text boxes contained in it and after getting all the child elements of detailsection(textboxes), I am setting the visibility of some text boxes false.But it does not make any effect on rendered report.
    Please help me
    Thanks in advance

    Here is my code snippet

    private void detail_ItemDataBound(object sender, EventArgs e)
            {
                Telerik.Reporting.Processing.DetailSection procDetail = sender as Telerik.Reporting.Processing.DetailSection;
                for (int i = 0; i < count; i++)
                {
                    Telerik.Reporting.Processing.TextBox nameTxt = (Telerik.Reporting.Processing.TextBox)Telerik.Reporting.Processing.ElementTreeHelper.FindChildByName(procDetail, "textBox1", true)[i];

                    Telerik.Reporting.Processing.TextBox txtApprovedDate = (Telerik.Reporting.Processing.TextBox)Telerik.Reporting.Processing.ElementTreeHelper.FindChildByName(procDetail, "txtApprovedDate", true)[i];
                    Telerik.Reporting.Processing.TextBox txtApprovedBy = (Telerik.Reporting.Processing.TextBox)Telerik.Reporting.Processing.ElementTreeHelper.FindChildByName(procDetail, "txtApprovedBy", true)[i];

                    Telerik.Reporting.Processing.TextBox txtSuggestedDate = (Telerik.Reporting.Processing.TextBox)Telerik.Reporting.Processing.ElementTreeHelper.FindChildByName(procDetail, "txtSuggestedDate", true)[i];
                    Telerik.Reporting.Processing.TextBox txtSuggestedBy = (Telerik.Reporting.Processing.TextBox)Telerik.Reporting.Processing.ElementTreeHelper.FindChildByName(procDetail, "txtSuggestedBy", true)[i];

                    Telerik.Reporting.Processing.TextBox username = (Telerik.Reporting.Processing.TextBox)Telerik.Reporting.Processing.ElementTreeHelper.FindChildByName(procDetail, "username", true)[i];
                    Telerik.Reporting.Processing.TextBox Email = (Telerik.Reporting.Processing.TextBox)Telerik.Reporting.Processing.ElementTreeHelper.FindChildByName(procDetail, "Email", true)[i];

                    Telerik.Reporting.Processing.TextBox Enabled = (Telerik.Reporting.Processing.TextBox)Telerik.Reporting.Processing.ElementTreeHelper.FindChildByName(procDetail, "Enabled", true)[i];
                    Telerik.Reporting.Processing.TextBox Locked = (Telerik.Reporting.Processing.TextBox)Telerik.Reporting.Processing.ElementTreeHelper.FindChildByName(procDetail, "Locked", true)[i];

                    Telerik.Reporting.Processing.TextBox textBox38 = (Telerik.Reporting.Processing.TextBox)Telerik.Reporting.Processing.ElementTreeHelper.FindChildByName(procDetail, "textBox38", true)[i];
                    Telerik.Reporting.Processing.TextBox textBox40 = (Telerik.Reporting.Processing.TextBox)Telerik.Reporting.Processing.ElementTreeHelper.FindChildByName(procDetail, "textBox40", true)[i];

                    Telerik.Reporting.Processing.TextBox textBox20 = (Telerik.Reporting.Processing.TextBox)Telerik.Reporting.Processing.ElementTreeHelper.FindChildByName(procDetail, "textBox20", true)[i];



                    Telerik.Reporting.Processing.TextBox textBox42 = (Telerik.Reporting.Processing.TextBox)Telerik.Reporting.Processing.ElementTreeHelper.FindChildByName(procDetail, "textBox42", true)[i];
                    Telerik.Reporting.Processing.TextBox textBox44 = (Telerik.Reporting.Processing.TextBox)Telerik.Reporting.Processing.ElementTreeHelper.FindChildByName(procDetail, "textBox44", true)[i];

                    Telerik.Reporting.Processing.TextBox textBox9 = (Telerik.Reporting.Processing.TextBox)Telerik.Reporting.Processing.ElementTreeHelper.FindChildByName(procDetail, "textBox9", true)[i];
                    Telerik.Reporting.Processing.TextBox textBox11 = (Telerik.Reporting.Processing.TextBox)Telerik.Reporting.Processing.ElementTreeHelper.FindChildByName(procDetail, "textBox11", true)[i];

                    Telerik.Reporting.Processing.TextBox textBox13 = (Telerik.Reporting.Processing.TextBox)Telerik.Reporting.Processing.ElementTreeHelper.FindChildByName(procDetail, "textBox13", true)[i];
                    Telerik.Reporting.Processing.TextBox textBox18 = (Telerik.Reporting.Processing.TextBox)Telerik.Reporting.Processing.ElementTreeHelper.FindChildByName(procDetail, "textBox18", true)[i];

                    if (string.IsNullOrEmpty(nameTxt.Text))
                    {

                        txtApprovedDate.Visible = false;
                        txtApprovedBy.Visible = false;

                        txtSuggestedDate.Visible = false;
                        txtSuggestedBy.Visible = false;

                        username.Visible = false;
                        Email.Visible = false;

                        Enabled.Visible = false;
                        Locked.Visible = false;

                        textBox38.Visible = false;
                        textBox40.Visible = false;

                        textBox20.Visible = false;


                    }
                    else
                    {
                        textBox42.Visible = false;
                        textBox44.Visible = false;


                        textBox9.Visible = false;
                        textBox11.Visible = false;


                        textBox13.Visible = false;
                        textBox18.Visible = false;


                    }
                }
            }
  7. Lalit
    Lalit avatar
    2 posts
    Member since:
    Sep 2012

    Posted 27 Apr 2013 Link to this post

    I have also used this..

    private void detail_ItemDataBound(object sender, EventArgs e)
            {
                //Telerik.Reporting.TableGroup group1 = new Telerik.Reporting.TableGroup();
                //group1.Name = "UserProfile";
                //group1.Groupings.Add(new Telerik.Reporting.Grouping("=Fields.UserProfile"));
                
                Telerik.Reporting.Processing.DetailSection procDetail = sender as Telerik.Reporting.Processing.DetailSection;
                for (int i = 0; i < count; i++)
                {
                    Telerik.Reporting.Processing.TextBox nameTxt = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("textBox1", true)[i];
                    
                    Telerik.Reporting.Processing.TextBox txtApprovedDate = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("txtApprovedDate", true)[i];
                    Telerik.Reporting.Processing.TextBox txtApprovedOn = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("txtApprovedOn", true)[i];
                    Telerik.Reporting.Processing.TextBox txtApprovedBy = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("txtApprovedBy", true)[i];
                    Telerik.Reporting.Processing.TextBox txtApprovedBy1 = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("txtApprovedBy1", true)[i];
                    
                    Telerik.Reporting.Processing.TextBox txtSuggestedDate = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("txtSuggestedDate", true)[i];
                    Telerik.Reporting.Processing.TextBox txtSuggestedOn = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("txtSuggestedOn", true)[i];
                    Telerik.Reporting.Processing.TextBox txtSuggestedBy = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("txtSuggestedBy", true)[i];
                    Telerik.Reporting.Processing.TextBox txtSuggestedBy1 = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("txtSuggestedBy1", true)[i];

                    Telerik.Reporting.Processing.TextBox username = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("username", true)[i];
                    Telerik.Reporting.Processing.TextBox txtUserName = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("txtUserName", true)[i];
                    Telerik.Reporting.Processing.TextBox Email = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("Email", true)[i];
                    Telerik.Reporting.Processing.TextBox txtEmail = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("txtEmail", true)[i];

                    Telerik.Reporting.Processing.TextBox Enabled = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("Enabled", true)[i];
                    Telerik.Reporting.Processing.TextBox txtEnabled = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("txtEnabled", true)[i];
                    Telerik.Reporting.Processing.TextBox Locked = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("Locked", true)[i];
                    Telerik.Reporting.Processing.TextBox txtLocked = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("txtLocked", true)[i];

                    Telerik.Reporting.Processing.TextBox textBox38 = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("textBox38", true)[i];
                    Telerik.Reporting.Processing.TextBox textBox39 = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("textBox39", true)[i];
                    Telerik.Reporting.Processing.TextBox textBox40 = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("textBox40", true)[i];
                    Telerik.Reporting.Processing.TextBox textBox41 = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("textBox41", true)[i];

                    Telerik.Reporting.Processing.TextBox textBox20 = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("textBox20", true)[i];
                    Telerik.Reporting.Processing.TextBox textBox6 = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("textBox6", true)[i];

                    //group
                    //group1.ReportItem = txtApprovedDate;

                    Telerik.Reporting.Processing.TextBox textBox42 = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("textBox42", true)[i];
                    Telerik.Reporting.Processing.TextBox textBox43 = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("textBox43", true)[i];
                    Telerik.Reporting.Processing.TextBox textBox44 = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("textBox44", true)[i];
                    Telerik.Reporting.Processing.TextBox textBox45 = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("textBox45", true)[i];

                    Telerik.Reporting.Processing.TextBox textBox9 = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("textBox9", true)[i];
                    Telerik.Reporting.Processing.TextBox textBox47 = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("textBox47", true)[i];
                    Telerik.Reporting.Processing.TextBox textBox11 = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("textBox11", true)[i];
                    Telerik.Reporting.Processing.TextBox textBox49 = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("textBox49", true)[i];

                    Telerik.Reporting.Processing.TextBox textBox13 = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("textBox13", true)[i];
                    Telerik.Reporting.Processing.TextBox textBox51 = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("textBox51", true)[i];
                    Telerik.Reporting.Processing.TextBox textBox18 = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("textBox18", true)[i];
                    Telerik.Reporting.Processing.TextBox textBox53 = (Telerik.Reporting.Processing.TextBox)procDetail.ChildElements.Find("textBox53", true)[i];
                    if (string.IsNullOrEmpty(nameTxt.Text))
                    {
                        //procTxtColor.Visible = false;
                        //procTxtColor.Height.Equals(0);
                        //procLblColor.Visible = false;
                        //procLblColor.Height.Equals(0);
                        //procLblColor1.Visible = false;
                        //procLblColor1.Height.Equals(0);
                        //procTxtColor1.Visible = false;
                        //procTxtColor1.Height.Equals(0);
                        txtApprovedDate.Visible = false;
                        txtApprovedOn.Visible = false;
                        txtApprovedBy.Visible = false;
                        txtApprovedBy1.Visible = false;

                        txtSuggestedDate.Visible = false;
                        txtSuggestedOn.Visible = false;
                        txtSuggestedBy.Visible = false;
                        txtSuggestedBy1.Visible = false;

                        username.Visible = false;
                        txtUserName.Visible = false;
                        Email.Visible = false;
                        txtEmail.Visible = false;

                        Enabled.Visible = false;
                        txtEnabled.Visible = false;
                        Locked.Visible = false;
                        txtLocked.Visible = false;

                        textBox38.Visible = false;
                        textBox39.Visible = false;
                        textBox40.Visible = false;
                        textBox41.Visible = false;

                        textBox20.Visible = false;
                        textBox6.Visible = false;
                        

                    }
                    else
                    {
                        textBox42.Visible = false;
                        textBox43.Visible = false;
                        textBox44.Visible = false;
                        textBox45.Visible = false;

                        textBox9.Visible = false;
                        textBox47.Visible = false;
                        textBox11.Visible = false;
                        textBox49.Visible = false;

                        textBox13.Visible = false;
                        textBox51.Visible = false;
                        textBox18.Visible = false;
                        textBox53.Visible = false;
                        
                    }
                }
            }
  8. Squall
    Squall avatar
    174 posts
    Member since:
    Feb 2011

    Posted 29 Apr 2013 Link to this post

    You have to use Bindings instead of events.

    SN
  9. Napa
    Napa avatar
    9 posts
    Member since:
    Mar 2013

    Posted 04 Jun 2013 Link to this post

    is your problem solved?could you post working code and i have same problem.
  10. Stef
    Admin
    Stef avatar
    3050 posts

    Posted 07 Jun 2013 Link to this post

    Hi Napa,

    Please check the answer posted here.

    In future please avoid double posting or posting question not related to the main topic discussed in the thread. Thus there is more likely other community members to notice your post and help you.

    Regards,
    Stef
    Telerik

    Have you tried the new visualization options in Telerik Reporting Q1 2013? You can get them from your account.

Back to Top
DevCraft banner