none
求助:在sl,beta2中如何获取datagrid中单元格的值. RRS feed

  • 问题

  • 求助:

    1.在sl,beta2中如何获取datagrid中单元格的值,用TextBlock tbs = (TextBlock) ( myDG3.Columns[0].GetCellContent(lst[0]));返回的tbs.text="";

    原代码如下:

    <UserControl xmlns:my="clr-namespaceTongue Tiedystem.Windows.Controls;assembly=System.Windows.Controls.Data"  x:Class="SilverlightApplication1.Page"
      
        xmlns="http://schemas.microsoft.com/client/2007"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    
      
        Width="500" Height="1000">

        <StackPanel Margin="10,10,10,10">

                   <myBig SmileataGrid x:Name="dataGrid1"
                Height="120" Width="450" Margin="0,5,0,10"
                AutoGenerateColumns="True" />           

               </StackPanel>

    </UserControl>

     

     

    public partial class Page : UserControl
        {
         
            public Page()
            {
                InitializeComponent();

                         dataGrid1.ItemsSource = Customer.GetSampleCustomerList();
                   }

        }

        public class Customer
        {
            public String FirstName { get; set; }
            public String LastName { get; set; }
            public String Address { get; set; }
            public Boolean IsNew { get; set; }

            // A null value for IsSubscribed can indicate
            // "no preference" or "no response".
            public Boolean? IsSubscribed { get; set; }

            public Customer(String firstName, String lastName,
                String address, Boolean isNew, Boolean? isSubscribed)
            {
                this.FirstName = firstName;
                this.LastName = lastName;
                this.Address = address;
                this.IsNew = isNew;
                this.IsSubscribed = isSubscribed;
            }

            public static List<Customer> GetSampleCustomerList()
            {
                return new List<Customer>(new Customer[4] {
                    new Customer("A.", "Zero",
                        "12 North Third Street, Apartment 45",
                        false, true),
                    new Customer("B.", "One",
                        "34 West Fifth Street, Apartment 67",
                        false, false),
                    new Customer("C.", "Two",
                        "56 East Seventh Street, Apartment 89",
                        true, null),
                    new Customer("D.", "Three",
                        "78 South Ninth Street, Apartment 10",
                        true, true)
                });
            }
        }

     

    2.在sl 添加服务引用的时候(wcf service or web service),出现错误Object reference not set to an instance of an object.结果不能添加成功,不知道是哪里出了问题?

    2008年6月19日 7:51

答案

  • 我觉得既然已经把 AutoGenerateColumns 设为 True 了,那么每一行都是一个 Customer 对象,可以通过遍历每一行然后转换为 Customer ,再获取它的属性就可以了。

    回去测试一下再来补充。

    2008年6月19日 10:10
    版主

全部回复

  • 我觉得既然已经把 AutoGenerateColumns 设为 True 了,那么每一行都是一个 Customer 对象,可以通过遍历每一行然后转换为 Customer ,再获取它的属性就可以了。

    回去测试一下再来补充。

    2008年6月19日 10:10
    版主
  • 的确是可以,忘记有这种方式了,之前还左思右想走了不少弯路.

    foreach (Customer listcu in dataGrid1.ItemsSource){}便可遍历出来.

     

    另如需要获得修改后的值的话可如下:

      private void dataGrid1_CommittingEdit(object sender, DataGridEndingEditEventArgs e)
            {
                DataGridRow r = e.Row;
                 Customer d = (r.DataContext) as Customer;   //获取的是修改前一条记录的值
              TextBox tx = e.EditingElement as TextBox;//获取的是修改后的单个值

                       }

    2008年6月20日 7:22
  • 晕,sl2 里面就没有CommittingEdit 这个事件,搞什么飞机 qq286137510
    2009年7月31日 6:02