datagrid 的问题 绑定后无法获取数据

qq14923349 2014-05-12 07:29:18
int count = commandlist.SelectedItems.Count;
for (int i = 0; i < count; i++)
{
DataRowView drv = (DataRowView)(commandlist.SelectedItems[i]);
MessageBox.Show(drv.Row[0].ToString());
}

DataRowView drv 一直为null


绑定
<DataGridTextColumn Header="" Binding="{Binding a1}" Width ="*"
...全文
187 12 打赏 收藏 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq14923349 2014-05-16
  • 打赏
  • 举报
回复
引用 9 楼 namhyuk 的回复:
[quote=引用 8 楼 qq14923349 的回复:] 那个集合就一个string 这样 ObservableCollection<string> 我简单的怎么用
那就别绑定到DataGrid了,ListBox这样的控件不更合适吗?[/quote] ListBox 我要改变行颜色 datagrid最方便
qq14923349 2014-05-16
  • 打赏
  • 举报
回复
引用 10 楼 namhyuk 的回复:
[quote=引用 9 楼 namhyuk 的回复:] 那就别绑定到DataGrid了,ListBox这样的控件不更合适吗?
如果非要ObservalbeCollection<string>这么玩,那就:
<sdk:DataGrid AutoGenerateColumns="False" Height="100" Name="dataGrid1" Width="120">
        <sdk:DataGrid.Columns>
            <sdk:DataGridTextColumn Header="测试" Binding="{Binding}" Width="*" />
        </sdk:DataGrid.Columns>
</sdk:DataGrid>
void Home_Loaded(object sender, RoutedEventArgs e)
{
    dataGrid1.ItemsSource = new ObservableCollection<string> {
        "abc",
        "def",
        "ghi",
        "jkl" };
}
private void button1_Click(object sender, System.Windows.RoutedEventArgs e)
{
    foreach (var item in dataGrid1.SelectedItems)
        MessageBox.Show(item as string);
}
[/quote] 有空试试 分数稍后跟上
namhyuk 2014-05-15
  • 打赏
  • 举报
回复
引用 8 楼 qq14923349 的回复:
那个集合就一个string 这样 ObservableCollection<string> 我简单的怎么用
那就别绑定到DataGrid了,ListBox这样的控件不更合适吗?
qq14923349 2014-05-15
  • 打赏
  • 举报
回复
引用 7 楼 namhyuk 的回复:
[quote=引用 5 楼 qq14923349 的回复:] [quote=引用 3 楼 namhyuk 的回复:] 假设绑定的是╳的集合。
foreach (var item in testUsersDataGrid.SelectedItems)
{
    ╳ x = item as ╳;
    MessageBox.Show(x);
}
就这么简单。
foreach (var item in g1.SelectedItems) { ObservableCollection<object> x = item as ObservableCollection<object>; MessageBox.Show(x.ToString()); } 还是null[/quote] 我贴的代码有点问题。还以为你能自己发现呢。因为你想item as ObservableColleciton<boject>怎么可能呢?item代表集合中的单个对象啊。 这样吧,比如是个
public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}
你准备绑定的是它的集合,那么初始化一下:
var people = new ObservableCollection<Person>{
    new Person { Id=1, Name="张丹", Age=18 },
    new Person { Id=2, Name="李明", Age=26 },
    new Person { Id=3, Name="黄易", Age=48 }
};
dataGrid1.ItemsSource = people;
private void button1_Click(object sender, System.Windows.RoutedEventArgs e)
{
    foreach (var item in dataGrid1.SelectedItems)
    {
        Person p = item as Person;
        MessageBox.Show(string.Format("Name:{0}, Age:{1}", p.Name, p.Age));
    }
}
是这么个意思。 [/quote] 那个集合就一个string 这样 ObservableCollection<string> 我简单的怎么用
namhyuk 2014-05-15
  • 打赏
  • 举报
回复
引用 9 楼 namhyuk 的回复:
那就别绑定到DataGrid了,ListBox这样的控件不更合适吗?
如果非要ObservalbeCollection<string>这么玩,那就:
<sdk:DataGrid AutoGenerateColumns="False" Height="100" Name="dataGrid1" Width="120">
        <sdk:DataGrid.Columns>
            <sdk:DataGridTextColumn Header="测试" Binding="{Binding}" Width="*" />
        </sdk:DataGrid.Columns>
</sdk:DataGrid>
void Home_Loaded(object sender, RoutedEventArgs e)
{
    dataGrid1.ItemsSource = new ObservableCollection<string> {
        "abc",
        "def",
        "ghi",
        "jkl" };
}
private void button1_Click(object sender, System.Windows.RoutedEventArgs e)
{
    foreach (var item in dataGrid1.SelectedItems)
        MessageBox.Show(item as string);
}
namhyuk 2014-05-14
  • 打赏
  • 举报
回复
引用 5 楼 qq14923349 的回复:
[quote=引用 3 楼 namhyuk 的回复:] 假设绑定的是╳的集合。
foreach (var item in testUsersDataGrid.SelectedItems)
{
    ╳ x = item as ╳;
    MessageBox.Show(x);
}
就这么简单。
foreach (var item in g1.SelectedItems) { ObservableCollection<object> x = item as ObservableCollection<object>; MessageBox.Show(x.ToString()); } 还是null[/quote] 我贴的代码有点问题。还以为你能自己发现呢。因为你想item as ObservableColleciton<boject>怎么可能呢?item代表集合中的单个对象啊。 这样吧,比如是个
public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}
你准备绑定的是它的集合,那么初始化一下:
var people = new ObservableCollection<Person>{
    new Person { Id=1, Name="张丹", Age=18 },
    new Person { Id=2, Name="李明", Age=26 },
    new Person { Id=3, Name="黄易", Age=48 }
};
dataGrid1.ItemsSource = people;
private void button1_Click(object sender, System.Windows.RoutedEventArgs e)
{
    foreach (var item in dataGrid1.SelectedItems)
    {
        Person p = item as Person;
        MessageBox.Show(string.Format("Name:{0}, Age:{1}", p.Name, p.Age));
    }
}
是这么个意思。
qq14923349 2014-05-14
  • 打赏
  • 举报
回复
foreach (var item in g1.SelectedItems) { object x = item as object; MessageBox.Show( x.ToString()); } 可以 但是会显示 {a1 ="xxxxxxxx"}之类的 我想直接拿xxxxxxxxxx这段值 还要字符串截取么?
qq14923349 2014-05-14
  • 打赏
  • 举报
回复
引用 3 楼 namhyuk 的回复:
假设绑定的是╳的集合。
foreach (var item in testUsersDataGrid.SelectedItems)
{
    ╳ x = item as ╳;
    MessageBox.Show(x);
}
就这么简单。
foreach (var item in g1.SelectedItems) { ObservableCollection<object> x = item as ObservableCollection<object>; MessageBox.Show(x.ToString()); } 还是null
qq14923349 2014-05-14
  • 打赏
  • 举报
回复
using System.Collections.ObjectModel; ObservableCollection<object> ObservableObj = new ObservableCollection<object>(); g1.ItemsSource = ObservableObj;
namhyuk 2014-05-14
  • 打赏
  • 举报
回复
假设绑定的是╳的集合。
foreach (var item in testUsersDataGrid.SelectedItems)
{
    ╳ x = item as ╳;
    MessageBox.Show(x);
}
就这么简单。
小恒丶 2014-05-13
  • 打赏
  • 举报
回复
for (int i = 0; i < count; i++) { 你绑定的数据类型 drv = (你绑定的数据类型)(commandlist.SelectedItems[i]); MessageBox.Show(drv.a1 ); } 你这样试看看
  • 打赏
  • 举报
回复
commandlist.SelectedItems[i] as 实体类型

8,757

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧