1

webserviceこの変数BookingDetailsEmailRS[]bookingDetailsEmailRSで航空会社から応答を得ています。

ネストされた配列で Travelers フィールドを取得したい。
グリッド ビューの [Travelers Name] 列にこのフィールドを入力します。

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

    string emailid = "mshrivastava@fareportal.com";

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

    SoapAuthentication soap = new SoapAuthentication();
    soap.UserName = "peter@mobissimo.com";
    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;
4

2 に答える 2

2

次のように、これらの値をからGridViewLinq IEnumerableに割り当てるために使用します。object array

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

TravelersあなたがbookingDetailsEmailRSで1つだけを取得しているなら、あなたは次のように直接書くことができます...

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

編集:-上記の連結された列と一緒にすべての列が必要な場合は、次のようにしてみてください...

GridView1.DataSource = bookingDetailsEmailRS.Select(obj=>new {
    Username =obj.Travelers[0].FirstName+obj.Travelers[0].MiddleName+obj.Travelers[0].LastName,
    obj.property1,
    obj.property2
}).TolIst();
于 2013-02-21T09:42:41.567 に答える
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 クラスのリスト/配列であるためです。

ありがとうございました

于 2013-02-21T09:14:18.520 に答える