2013-02-21 3 views
1

Я получаю ответ от авиакомпании webservice в этой переменной BookingDetailsEmailRS[] bookingDetailsEmailRS.

Я хочу получить поле Путешественники во вложенном массиве.
заполните это поле в моем окне сетки.Получите поле из вложенного массива

protected void Button1_Click(object sender, EventArgs e) 
{ 
    GatewayBookingClient b = new GatewayBookingClient(); 

    string emailid = "[email protected]"; 

    string errorCode = string.Empty; 
    string errorAtNode = string.Empty; 

    SoapAuthentication soap = new SoapAuthentication(); 
    soap.UserName = "[email protected]"; 
    soap.Password = "mob1ss1mo1947"; 
    BookingDetailsEmailRS[] bookingDetailsEmailRS = b.GetBookingDetails(soap, emailid, out errorCode, out errorAtNode); 

    for (int i = 0; i < bookingDetailsEmailRS.Length - 1; i++) 
    { 
     GridView1.DataSource = bookingDetailsEmailRS; 
     GridView1.DataBind(); 
    } 
} 

Я успешно неправдоподобное значение из массива, но еще одна проблемы в том, что я хочу, чтобы связать каждое значение переменного имени в столбце «TravellerName» в сетке. Столбец «TravellerName» создал мою собственную сетку.

string name = bookingDetailsEmailRS[i].Travelers[0].FirstName + 
    bookingDetailsEmailRS[i].Travelers[0].MiddleName + 
    bookingDetailsEmailRS[i].Travelers[0].LastName; 
+0

Поскольку вы просите о помощи с очень конкретной проблемой, которую вы можете оказать помощь тем, предполагает, чтобы помочь вам, показывая класс 'BookingDetailsEmailES'. Еще лучше вы можете переписать пример более общим образом с примерами классов и примером с уплотненным кодом. – faester

+0

да, я согласен с вами. Я хочу только пример этой проблемы. –

+0

Вы хотите иметь один столбец от службы и другие от своих собственных, а затем хотите привязать сетку? –

ответ

0

Вы можете достичь код

string name = bookingDetailsEmailRS[i].Travelers[0].FirstName + bookingDetailsEmailRS[i].Travelers[0].MiddleName + bookingDetailsEmailRS[i].Travelers[0].LastName; 

, возвращая набор данных из службы. В этом случае вы хотите вернуть набор данных вместо списка, массивы.

Если вы возвращаете список вы можете получить код с помощью

string name = bookingDetailsEmailRS[i].FirstName + bookingDetailsEmailRS[i].MiddleName + bookingDetailsEmailRS[i].LastName; 

потому bookingDetailsEmailRS [] является список/массив класса BookingDetailsEmailRS.

Спасибо

2

Использование Linq IEnumerable присвоить эти значения из object array в GridView, как следовать .....

GridView1.DataSource = bookingDetailsEmailRS.Select(obj=>obj.Travelers).Select(x=>x.FirstName+x.MiddleName+x.LastName).ToList(); 

, если вы получаете в bookingDetailsEmailRS только один Travelers, то вы можете напрямую писать, как следовать ...

GridView1.DataSource = bookingDetailsEmailRS.Select(obj=>obj.Travelers[0].FirstName+obj.Travelers[0].MiddleName+obj.Travelers[0].LastName)).ToList(); 

EDIT: - Если вы хотите, чтобы все столбцы вместе с выше concatnated один, то попробуйте следующее ...

GridView1.DataSource = bookingDetailsEmailRS.Select(obj=>new { 
    Username =obj.Travelers[0].FirstName+obj.Travelers[0].MiddleName+obj.Travelers[0].LastName, 
    obj.property1, 
    obj.property2 
}).TolIst(); 
+0

, спасибо за ваше второе решение, но я хочу добавить этот столбец в существующий gridview1. GridView1.DataSource = bookingDetailsEmailRS.Select (obj => obj.Travelers [0] .FirstName + obj.Travelers [0] .MiddleName + obj.Travelers [0] .LastName) .ToList(); GridView1.DataSource = bookingDetailsEmailRS; GridView1.DataBind(); –

+0

Надеюсь, вы понимаете мою проблему. Я хочу получить столбец в моем gridview. –

+1

см. Редактирование ... это то, что вы хотите отобразить весь объект в gridview? Дайте мне знать. –