0

我只想将e.Tripmy传递string.FormattripChoose. 截至目前,它试图传递一个未针对该方法格式化的字符串。如果我可以传递字符串的 Trip 部分,它会起作用。有什么建议么?

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

看起来您的 feeTotalSelect 是一个 ASP.NET Select 控件,而您所做的最终会在结果 HTML 中添加一个元素,该元素仅由文本标识,例如:

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

在您的费用 TotalSelect.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是 aList<string>并且tripChoose绑定到它,您可以这样做:

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