Click here to Skip to main content
15,917,176 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I am bind datagrid using List in wpf and bind combobox in datagrid but i am scroll datagrid that time combox has been reset following my code any one can give me solution
Reasion :- Grid Scroll Time

Desizen :-
XML
<DataGrid x:Name="grddisplay"   TabIndex="1"  AutoGenerateColumns="False" ItemsSource="{Binding C_HoldControlValue}"    FontSize="11" HorizontalAlignment="Left"  Margin="10,58,0,0" VerticalAlignment="Top" Width="414" Height="455" IsTabStop="True" RenderTransformOrigin="0.5,0.5" FontFamily="Verdana" >
            <DataGrid.Columns>
                <DataGridTextColumn Header="Item No" Width="60" Binding="{Binding SrNo}"></DataGridTextColumn>
               <DataGridTemplateColumn Header="Remark" Width="60">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <ComboBox Margin="2" Name="cmbbindremark"  SelectedIndex="1" SelectedItem="Control_Remark"   SelectedValue="{ Binding  Control_Remark, Mode=TwoWay }"   ItemsSource="{Binding C_Remarks_Collection,Mode=TwoWay}"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <!--<DataGridComboBoxColumn  Header="Remarks"  x:Name="cmbbindremark" ItemsSource="{Binding C_Remarks_Coll}"  SelectedItemBinding ="{ Binding  C_Remarks_Collection,Mode=TwoWay}"   Width="110" ></DataGridComboBoxColumn>-->
            <DataGridTextColumn Header="Remarks" Width="80" Binding="{Binding Remarks}"></DataGridTextColumn>
            <DataGridTextColumn Header="Category" Width="90" Binding="{Binding Category}"></DataGridTextColumn>
                <DataGridTextColumn Header="Caption" Width="160" Binding="{Binding  Caption}" ></DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>


Code:-
VB
Dim C_HoldControlValue As New List(Of ControlValue)()
       Try
           grddisplay.AutoGenerateColumns = True
           svbutton.IsEnabled = False
           Dim OCcmd As New SqlCommand
           Dim OCadp As New SqlDataAdapter
           Dim strin() As String = Nothing
           OCcmd = New SqlCommand("select cbsrno,Remarks,Category,cbcaptons,trgvalue from ControlBox order by cbsrno", sqlcn)
           OCadp.SelectCommand = OCcmd
           OCadp.Fill(ds_cntrl, tblname)
           dv2 = New DataView(ds_cntrl.Tables(tblname))
           Dim splStrRemark As DataRow = ds_cntrl.Tables(0).Rows(1)

         

           grddisplay.ItemsSource = LoadCollectionData(ds_cntrl)
           grddisplay.AutoGenerateColumns = False


          
       Catch
       End Try

   End Sub


function :-
VB
Public Function LoadCollectionData(ByVal ds As DataSet) As List(Of ControlValue)

       Dim strin() As String = Nothing
       Dim authors As New List(Of ControlValue)()
       For Each dr As DataRow In ds.Tables(0).Rows
           Dim s As String = dr("Remarks")
           If dr.Table.Columns(1).ToString = "Remarks" Then
               Dim dsa As String = s.ToString
               strin = dsa.ToString.Split(",")
           End If
           authors.Add(New ControlValue() _
                With { _
               .SrNo = dr(0), _
               .Remarks = dr(4), _
               .Category = dr(2), _
               .Caption = dr(3), _
               .C_Remarks_Collection = strin})
       Next
       grddisplay.CanUserAddRows = False
       Return authors
   End Function


property :-
Public Class ControlValue
Private C_Remarks As String
Private C_Caption As String
Private C_Category As String
Private C_SrNo As String
Private C_RemarksColl() As String
Public Property Remarks() As String
Get
Return C_Remarks
End Get
Set(value As String)
C_Remarks = value
End Set
End Property

Public Property Caption() As String
Get
Return C_Caption
End Get
Set(value As String)
C_Caption = value
End Set
End Property

Public Property Category() As String
Get
Return C_Category
End Get
Set(value As String)
C_Category = value
End Set
End Property

Public Property SrNo() As String
Get
Return C_SrNo
End Get
Set(value As String)
C_SrNo = value
End Set
End Property
Public Property C_Remarks_Collection() As String()
Get
Return C_RemarksColl
End Get
Set(value As String())
C_RemarksColl = value
End Set
End Property
End Class
Posted
Updated 15-Jan-14 0:09am
v3

1 solution

VB
xmlns:my="http://schemas.microsoft.com/wpf/2008/toolkit"
   xmlns:staticData="clr-namespace:Ocean.MW"


XML
<Window.Resources>
       <staticData:ControlValue x:Key="ControlValue"  ></staticData:ControlValue>
   </Window.Resources>


<datagridtemplatecolumn header="Remarks" width="100">
<datagridtemplatecolumn.celltemplate>
<datatemplate>
<textblock text="{Binding Remarks}">


<datagridtemplatecolumn.celleditingtemplate>
<datatemplate>
<combobox height="22">
ItemsSource="{Binding C_Remarks_Collection }"
SelectedItem="{Binding Remarks}"/>


 
Share this answer
 
v3

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900