RadCoursel: databinding to a textbox in a CarouselItems

3 posts, 0 answers
  1. Craig Cote
    Craig Cote avatar
    8 posts
    Member since:
    Oct 2004

    Posted 11 Jul 2008 Link to this post

    The ItemSource of my RadCarousel is a datatable (which is capable of databinding according to MS).  I've added a TextBox control to my XAML definition for the ControlTemplate for the CarouselDataRecordPresenter as per the following code:

    <

    StackPanel Grid.Row="0" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" >
        
    <TextBox Text="{Binding Path=Fields[Answer].Value, Mode=TwoWay,
            
    UpdateSourceTrigger=PropertyChanged}" FontSize="12" Foreground="Black"
            
    Width="216" />
    </StackPanel>

    The carousel is displaying the values from the DataTable fine, but the TextBox.Text is not successfully updating the DataTable's "Answer" column.

    Note that I have specified TwoWay binding (should not be necessary because that is the default mode for the TextBox control) as well as the UpdateSourceTrigger property of the binding (just to test).

    This is a really annoying problem!  Now I have to try to programatically determine what the TextBox.Text value is and manually update the datasource.  Any direction on where to start doing so would be most helpful.

  2. Craig Cote
    Craig Cote avatar
    8 posts
    Member since:
    Oct 2004

    Posted 12 Jul 2008 Link to this post

    I still think that there is an issue here (and of the three posts I made originally, this is the only one that has not been responded to).  But I've come up with the following work-around:

    I bound the "Tag" property of the TextBox to the identity field of the record, added an event handler for the TextChanged event.  Using that "Tag" value, I do a select on my data source, then update the appropriate field with the TextBox's Text value.

    (I tried to use the MouseLeave event to avoid processing the EventHandler so often, but when I moved my mouse away from the TextBox to click on a button to signal that I was ready to move to the next stage, the last TextBox I was on did not fire the event!)
  3. Milan
    Admin
    Milan avatar
    1989 posts

    Posted 14 Jul 2008 Link to this post

    Hi Craig Cote,

    At this moment we do not directly support data editing in our RadCarousel but we can use a trick to enable this functionality. Usually the RadCarousel will create the data presenters that are needed to visualize your data entities but you can turn that functionality off by setting the AutogenerateDataPresenters property to false. If this property is set to false you can provide a DataTemplate that will define how your data will be displayed. Usually one would use this approach to provide custom styling but now we will simply use it to get access to the original data entities. Here is a sample XAML code that has a global DataTemplate that is targeting the CustomersRow data entity of the NorthWind database.

    <Grid> 
        <Grid.Resources> 
            <DataTemplate DataType="{x:Type test:NWindDataSet+CustomersRow}"
                <StackPanel> 
                    <TextBox Text="{Binding Path=CustomerID}"/> 
                </StackPanel> 
            </DataTemplate> 
        </Grid.Resources> 
        <Telerik:RadCarousel AutoGenerateDataPresenters="False"/> 
    </Grid> 

    The benefit of this approach is that you are directly accessing the properties of the data entities and you can modify them.
    Now the TextBox is directly bound to the CustomerID property and any changes will be propagated. I hope that this workaround works for you.

    Sincerely yours,
    Milan
    the Telerik team

    Instantly find answers to your questions at the new Telerik Support Center
Back to Top