2008-08-28 12 views
7

Aquí está la situación: Necesito vincular un WPF FixedPage con un DataRow. Los enlaces no funcionan contra DataRows; trabajan contra DataRowViews. Necesito hacer esto de la manera más genérica posible, ya que no sé nada y no tengo control sobre lo que está en el DataRow.Obtenga DefaultView DataRowView desde un DataRow

Lo que necesito es poder obtener un DataRowView para un DataRow dado. No puedo usar el método Find() en el DefaultView porque eso requiere una clave y no hay garantía de que la tabla tenga un conjunto de claves principal.

¿Alguien tiene alguna sugerencia sobre la mejor manera de evitar esto?

Respuesta

6

No es exactamente una pieza sexy de código, pero su no parece ser una forma automática de encontrar la fila sin solo hacer un bucle en la tabla.

 DataRowView newRowView = null; 
     foreach (DataRowView tempRowView in myDataTable.DefaultView) 
     { 
      if (tempRowView.Row == rowToMatch) 
       newRowView = tempRowView; 
     } 
     if (newRow != null) 
      UseNewRowView(newRowView); 
     else 
      HandleRowNotFound(); 
+0

Oye, solo me tomó 4-5 años. – Will

3
row.Table.DefaultView[row.Table.Rows.IndexOf(row)] 

Esta es una buena respuesta. Pero si se encuentra en esta situación, debería considerar aprender más sobre DataViews y cómo se usan, luego refactorizar su código para que sea centrado en la vista en lugar de centrarse en la tabla.

+0

Esto no es una buena idea, si la vista predeterminada se ha filtrado, es posible que los índices no se alineen. –

+1

@JoelBarsotti: a menos que elimines géneros/filtros antes de hacer esto, después de lo cual puedes volver a agregarlos. Pero una buena captura. Si tiene * una mejor respuesta *, no dude en proporcionarla y (si funciona) lo seleccionaré como mejor. – Will

Cuestiones relacionadas