我有这段代码:
Dim prueba As New SvcEduardo.Service1
Dim listaAnalisis As List(Of SvcService.Analisis)
listaAnalisis = prueba.GetClinicoAnalisis()
'Dim listaModificada = (From l In listaAnalisis
' Select l.Colum1, l.Colum2).ToList
DataGridView1.DataSource = listaModificada
listaAnalisis是一个包含类别(Analisis)的List,每个类别有3个属性。
listaModificada假设删除一个属性并保留另外两个属性,以便我可以将它绑定到DataGridView。
我可以用linq做到这一点吗?或者是严格必须使用另一个类结构(AnalisisModified),它只包含我需要的两个属性?
我试图避免这种情况
谢谢!
编辑
'Dim listaModificada = (From l In listaAnalisis
' Select l.Colum1, l.Colum2).ToList
这里我无法选择colums导致listaAnalisis一个List,我怎样才能将查询设置为单个Class(Analisis)?
答案 0 :(得分:2)
您无需从班级中删除该属性。只是不要在GridView上显示列/属性。
也许您可以切换AutoGenerateColumns
属性:
DataGridView.AutoGenerateColumns = False
然后明确设置您实际想要显示的DGV上的列。您可以在设计时或运行时执行此操作:
dataGridView1.Columns.Add( "CustomerName", "Name")
dataGridView1.Columns.Add( "CustomerStatus", "Current Status")
dataGridView1.Columns.Add( "CustContactPhone", "Phone")
对列进行或更精细的控制:
Dim dvc as New DataGridViewColumn()
dvc.HeaderText = "ID"
dvc.DataPropertyName = "CustomerID"
' all the properties you need.
dataGridView1.Columns.Add(dvc)
dataGridView1.DataSource = listaModificada
答案 1 :(得分:2)
你仍然想要AutoGenerateColumns,所以不要将它设置为false,因为它会在此之后停止生成所有列。
在数据网格的AutoGenerateColumns事件下,尝试在列标题上使用Select语句,并使用e.Cancel作为您不想显示的那个。
实施例
Private Sub SearchResults_AutoGeneratingColumn(ByVal sender As Object, ByVal e As System.Windows.Controls.DataGridAutoGeneratingColumnEventArgs) Handles SearchResults.AutoGeneratingColumn
Dim colName As String
colName = e.Column.Header
Select Case colName
Case "_city"
e.Column.Header = "City"
Case "_firstName"
e.Column.Header = "First Name"
Case "_lastName"
e.Column.Header = "Last Name"
Case "_state"
e.Column.Header = "State"
Case "_orgCode", "_accntCode", "_state_name"
e.Cancel = True
End Select
End Sub
最后一个案例处理你不想要显示的案例。 在此示例中,我还将列标题的名称更改为更易读的名称。希望这有帮助!
答案 2 :(得分:1)
一个非常简单的例子
<asp:DataGrid ID="Grid" runat="server"AutoGenerateColumns="False">
<Columns>
<asp:BoundColumn HeaderText="Property1" DataField="Property1"></asp:BoundColumn>
<asp:BoundColumn HeaderText="Property2" DataField="Property2"></asp:BoundColumn>
</asp:DataGrid>