滚动datagridcombo框时如何避免组合框重置 [英] how to avoid combo box reset when scrolling datagridcombo box
问题描述
我使用wpf中的List绑定数据网格并绑定数据网格中的组合框但是我滚动数据网格,时间combox已经重置了我的代码后任何人都可以给我解决方案
Reasion: - Grid Scroll Time
Desizen: -
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 :-
<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:-
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 :-
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
属性: -
公共类ControlValue
私有C_Remarks为字符串
私有C_Caption As字符串
私有C_Category为字符串
私有C_SrNo为字符串
私有C_RemarksColl()为字符串
公共财产备注()作为字符串
获取
返回C_Remarks
结束获取
设置(值为字符串)
C_Remarks = value
结束集
结束财产
公共财产标题()如字符串
获取
返回C_Caption
结束获取
设置(值为字符串)
C_Caption = value
结束集
结束财产
公共财产类别()As String
获取
返回C_Category
结束获取
套装(价值为字符串)
C_Category =价值
结束套件
结束财产>
Public Property SrNo()As String
获取
返回C_SrNo
结束获取
Set(value As String)
C_SrNo = value
结束集
结束物业
Public Property C_Remarks_Collection()As String()
获取
返回C_RemarksColl
结束获取
Set( value As String())
C_RemarksColl = value
结束集
结束财产
结束类
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
推荐答案
xmlns:my="http://schemas.microsoft.com/wpf/2008/toolkit"
xmlns:staticData="clr-namespace:Ocean.MW"
<Window.Resources>
<staticData:ControlValue x:Key="ControlValue" ></staticData:ControlValue>
</Window.Resources>
< datagridtemplatecolumn header =备注width =100> ;
< datagridtemplatecolumn.celltemplate>
< datatemplate>
< textblock text ={Binding Remarks}>
< datagridtemplatecolumn.celleditingtemplate>
< datatemplate>
< combobox height =22>
ItemsSource ={Binding C_Remarks_Collection}
SelectedItem ={Binding Remarks}/>
<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}"/>
这篇关于滚动datagridcombo框时如何避免组合框重置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!