2011-06-28 6 views
1

(OF)リストから一つの列を削除するため、私はこのコードを持っている:LINQ問合せ

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はリストWICHがクラス(Analisis)WICH 3つの特性をそれぞれ有している含んでいます。
listaModificadaは1つのプロパティを削除し、他の2つのプロパティを保持してDataGridViewにバインドできるとします。
linqでこれを行うことはできますか?または、必要な2つのプロパティのみを含む別のクラス構造(AnalisisModified)を使用することは厳密に必要ですか?
私はそれを避けようとしています。
ありがとうございます!

EDITここ

'Dim listaModificada = (From l In listaAnalisis 
'      Select l.Colum1, l.Colum2).ToList 

私はそれどこ単一クラス(Analisis)としてクエリを設定することができますどのように、listaAnalisis ESリスト原因columsを選択することはできませんか?

+0

試しましたか? – BrokenGlass

+1

なぜ私の最初の質問でしょう。最初に削除する必要なしに、グリッドビューに表示するプロパティを設定できます。それでも実際にはプロパティを削除することはできません。値をリセットするだけです。 – ChrisBint

+0

@BrokenGlassリストで動作するようにlinqクエリを設定する方法がわからないので、私はしませんでした!それから列車を得ることができません! – euther

答えて

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 
+0

ありがとうございます@ p.campbell私はあなたのaproachをAutoGenerateColumns = Falseに使用しました! – euther

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> 
+0

ASP.NETではなく、WinForms - "DataGridView" –

+0

Chrisに感謝します。しかし私はWinFormsで作業しています。私はaspに慣れています。ネットがWinformsで私は少し後ろです。 – euther

2

あなたにまだ非常に単純な例AutoGenerateColumnsにしたいので、それ以降のすべての列の生成を停止するので、falseに設定しないでください。

DataGridのAutoGenerateColumnsイベントの代わりに、列ヘッダーでSelectステートメントを使用し、表示しないイベントにe.Cancelを使用してみます。

Ex。

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の

最終場合は、表示したいいけないものを処理します。 この例では、列見出しの名前を読みやすい名前に変更しました。お役に立てれば!

+0

素敵なアイデア!私は確かに将来それを使用するつもりです!ありがとう – euther