2

XAML 代码:

<ListView.View>
    <GridView x:Name="myGridView">
        <GridViewColumn Width="0" DisplayMemberBinding="{Binding Id}">
            <GridViewColumnHeader Content="Id" IsHitTestVisible="False" />
        </GridViewColumn>
        <GridViewColumn Width="50" Header="Cant">
            <GridViewColumn.CellTemplate>
                <DataTemplate>
                    <TextBox FontSize="11" />
                </DataTemplate>
            </GridViewColumn.CellTemplate>
        </GridViewColumn>
        <GridViewColumn Width="300" Header="Nombre" DisplayMemberBinding="{Binding Nombre}" />
    </GridView>
</ListView.View>

用来自另一个列表视图的项目填充 myListView 的 C# 代码:

private void myListView_Drop(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent("myFormat"))
    {
        foreach (var item in e.Data.GetData("myFormat") as Dictionary<string, string>)
        {
            var itemC = new {Id = item.Key, Cant = "", Nombre = item.Value};
            myListView.Items.Add(itemC);
            myListView.SelectedItem = itemC;
        }
    }
}

从 myListView 检索项目的 C# 代码:

private Dictionary<string, string> GenerateArts()
{
    var arts = new Dictionary<string, string>();
    dynamic result = myListView.Items;

    foreach (var item in result)
       arts.Add((string) item.Id, (string) item.Cant);

    return arts;
}

填充 myListView 后,用户可以在“Cant”列的每个文本框中写入数字,但稍后,当单击按钮并调用 GenerateArts() 时,这些数字会丢失,即 item.Cant 为“”(空字符串)每个物品。

有什么问题?

编辑:

当调用 GenerateArts() 时, item.Id 和 item.Nombre 的值按预期存在。问题出在 item.Cant 上。

4

2 回答 2

2

绑定CantTextBox.Text属性,如下所示。

XAML:

            <GridViewColumn Width="50" Header="Cant">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <TextBox FontSize="11" Text="{Binding Cant}" MinWidth="30"/>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>

更改背后的代码:

var itemC = new MyData() { Id = item.Key, Cant = "", Nombre = item.Value };

MyData 类

public class MyData
{
    public string Id { get; set; }
    public string Cant { get; set; }
    public string Nombre { get; set; }
}
于 2013-08-08T18:20:53.407 回答
-1

您是否在 page_load 事件中使用 if(!IsPostBack) ?也许您正在再次绑定数据?

于 2013-08-08T18:08:08.320 回答