2010-11-18 74 views
27

Tengo un conjunto de datos que estoy vinculando a un cuadro de lista. Sin embargo, quiero combinar dos de los campos para formar el DataTextField. ¿Es esto posible o tendré que pasar por las Filas de datos?Combinación de dos campos en un DataTextField. es posible?

lstAddressDropdown.DataSource = dsAddress; 
lstAddressDropdown.DataTextField = "StreetAddress" + "Place"; 
lstAddressDropdown.DataBind(); 
lstAddressDropdown.Items.Insert(0, new ListItem("Please select")); 

Vale la pena señalar que el conjunto de datos se vuelve de un servicio web así que no puedo cambiar cualquier procedimiento almacenado para combinar las columnas allí.

+0

¿No puede obtener los datos en un campo de su fuente de datos? –

Respuesta

39

Puede agregar una columna adicional a la tabla de datos que es una columna calculada y usarla como su campo de texto de datos (docs: Multi-field Data Binding).

Así que para su ejemplo anterior se podría hacer algo como esto:

dsAddress.Tables[0].Columns.Add("StreetAndPlace",typeof(string),"StreetAddress + Place"); 
lstAddressDropdown.DataSource = dsAddress; 
lstAddressDropdown.DataTextField = "StreetAndPlace"; 
lstAddressDropdown.DataBind(); 
lstAddressDropdown.Items.Insert(0, new ListItem("Please select")); 

Para agregar un espacio entre la StreetAddress y lugar reemplazar la cadena de expresión se muestra arriba con "StreetAddress + ' ' + Place"

+0

Voy a dar una oportunidad, gracias –

+1

Me sorprende que el artículo de varios datos de encuadernación de datos, escrito en 2002, todavía es útil hoy ... –

2

modifique la consulta como por su requisito en Oracle

SELECT 
'<B>'||SHORTNAME||'</B><br/>('||DEPARTMENT||')' AS USERNAME 
FROM TABLE 

en consulta anterior Nombre mostrará en negrita y debajo de él departamento mostrará como:

<b>Mr. Jagdeep Mankotia</b><br> 
(Web Application Development) 
-1

Nunca necesidad de escribir bucles más con LINQ.

  • Crear una clase para volver a los dos campos.

    public partial class EmployeeDropdownInfo { public int person_id {get; conjunto; } public string employee_name {get; conjunto; } }

  • Obtenga sus datos y use linq para filtrar y devolver lo que necesita.

    Lista solicitantes = (a partir de t en dc.sp_GetEmployees() seleccionar nueva EmployeeDropdownInfo() { person_id = t.person_id, employee_name = t.first_name + "" + t.last_name }). ToList ();

    EmployeeDropdownInfo firstEntry2 = new EmployeeDropdownInfo() {person_id = 0, employee_name = "- Seleccione un empleado -"}; solicitantes.Insertar (0, firstEntry2); ddlRequestor.DataSource = solicitantes; ddlRequestor.DataTextField = "employee_name"; ddlRequestor.DataValueField = "person_id"; ddlRequestor.DataBind();

De esta manera usted no tiene que cambiar el proc y menús desplegables sólo se necesitan dos valores de la mayoría de las veces.

+0

No estaba usando Linq para hacer esto (de vuelta en el día) . Tenía que hacerse usando conjuntos de datos –

0

Sé que esto ya ha sido respondido, pero creo que hay una manera más fácil de resolver este problema.

Modifique su comando de selección y combine los 2 DataTextField que desea mostrar.

DataSource.SelectCommand = "Select (Column1 || ' ' || Column2) As Column1And2 From Table"; 

RadioButtonList1.DataTextField = "Column1And2"; 

Espero que esto ayude, lo mejor no es la mejor manera, pero creo que es mucho más fácil de entender.

Cuestiones relacionadas