0

で参照されているメソッドe.Tripに自分だけを渡したい。現在のところ、メソッド用にフォーマットされていない文字列を渡そうとしました。文字列のTrip部分を渡すことができれば、機能します。助言がありますか?string.FormattripChoose

private void LoadExpenseListSums()
{
    expenseTotalSelect.Items.Clear();
    var sortedList=
        from e in roster
        group e by e.Trip into expenseCollect
        select new { Trip = expenseCollect.Key, SumAmount = expenseCollect.Sum(e => e.Amount) };
    foreach (var e in sortedList)
        tripChoose.Items.Add(string.Format("{0} | ${1}", e.Trip, e.SumAmount));
}
4

3 に答える 3

1

ExpenseTotalSelectはASP.NETSelectコントロールのようであり、実行していることは、次のようなテキストによってのみ識別される要素を結果のHTMLに追加することになります。

<select id='expenseTotalSelect'>
    <option>Hawaii | $5000</option>
    <option>London | $4000</option>
    ...
</select>

あなたのexpenseTotalSelect.Items.Add呼び出しでは、おそらく次のことを行う方が良いでしょう:

expenseTotalSelect.Items.Add(
       new ListItem(string.Format("{0} | ${1}", e.Trip, e.SumAmount),e.Trip));

これで、HTMLにレンダリングすると、次のようになります。

<select id='expenseTotalSelect'>
    <option value='Hawaii'>Hawaii | $5000</option>
    <option value='London'>London | $4000</option>
    ...
</select>

tripChoose.SelectedItem.Valueまた、この例では、e.Trip値(ハワイまたはロンドン)のみが含まれているものを参照する方が簡単です。

于 2012-04-25T07:08:20.083 に答える
1

今、私たちは実際に私たちが何を扱っているかを知っています、私はあなたがこのようなものを望んでいると思います:

private void LoadExpenseListSums()
{
    expenseTotalSelect.Items.Clear();
    var dateSorted =
        from e in roster
        group e by e.Trip into tripGroup
        select new { Trip = tripGroup.Key,
                     Text = string.Format("{0} | ${1}",
                                          tripGroup.Key,
                                          tripGroup.Sum(e => e.Amount) };
    tripChoose.DataSource = dateSorted;
    tripChoose.DisplayMember = "Text";
    tripChoose.ValueMember = "Trip";
}

これにはいくつかの前提があります。ase、-rosterはメモリ内のコレクションです。そうでない場合は、AsEnumerableローカルで実行するために、フォーマットの前に呼び出しが必要になる可能性があります-匿名型はデータバインディングで機能します。そうかどうかはわかりませんが、そうだといいのですが

その後、メンバーを使用しSelectedValueて旅行IDを検索します。

于 2012-04-26T06:20:56.443 に答える
0

コメントで提案されているようにオブジェクトを使用する必要があると考えてください。ただし、がであり、それにバインドされていると仮定expenseTotalSelectするList<string>と、次のtripChooseように実行できます。

(string)tripChoose.SelectedItem.Split('|')[0].Replace(" ", string.Empty)
于 2012-04-25T07:07:32.110 に答える