Silverlight DataGrid使用之二 更新行篇

来源:互联网 发布:淘宝上什么最好卖 编辑:程序博客网 时间:2024/05/22 01:48

首先在wcf加上一个编辑方法

    [ServiceContract]
    public interface IService1
    {

        [OperationContract]
        List<CData> GetCDatas();
        [OperationContract]
        bool EditCData(CData c);


        // TODO: 在此添加您的服务操作
    }

// 使用下面示例中说明的数据协定将复合类型添加到服务操作
    [DataContract]
    public class CData
    {
        [DataMember]
        public int id;
        [DataMember]
        public string text;

    }

    [System.ServiceModel.Activation.AspNetCompatibilityRequirements(RequirementsMode = System.ServiceModel.Activation.AspNetCompatibilityRequirementsMode.Required)]
    public class Service1 : IService1
    {


        public List<CData> GetCDatas()
        {
            SqlConnection cn = new SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["sldatabaseConnectionString"].ConnectionString);
            SqlCommand  cmd=new SqlCommand ("select id,text from t1",cn);
            cn.Open();
            SqlDataReader dr=cmd.ExecuteReader( );
             List<CData> CList=new List<CData> ();
             while (dr.Read())
             {
                 CData c = new CData { id = int.Parse(dr["id"].ToString()), text = dr["text"].ToString() };
                 CList.Add(c);


             }
             cn.Close();
            return CList;

        }


        public bool EditCData(CData c)
        {

            SqlConnection cn = new SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["sldatabaseConnectionString"].ConnectionString);
            SqlCommand cmd = new SqlCommand("update t1 set text=@text where id=@id",cn);
            cmd.Parameters.Add("@text", System.Data.SqlDbType.NVarChar).Value = c.text;
            cmd.Parameters.Add("@id", System.Data.SqlDbType.Int).Value=c.id;
            cn.Open();
            int r = cmd.ExecuteNonQuery();
            cn.Close();
            if (r > 0)
                return true;
            else
                return false;
        }
    }

在数据库 创建一个表 随便取名


xaml代码

   <sdk:DataGrid AutoGenerateColumns="False" Height="236" HorizontalAlignment="Left" Name="dataGrid1" VerticalAlignment="Top" Width="368" LoadingRow="dataGrid1_LoadingRow" FrozenColumnCount="1"RowEditEnded="dataGrid1_RowEditEnded">
            <sdk:DataGrid.Columns>
             <sdk:DataGridTextColumn Header="编号"   Binding="{Binding id}"></sdk:DataGridTextColumn>
                <sdk:DataGridTemplateColumn Header="文本">
                    <sdk:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding text}" />
                        </DataTemplate>
                    </sdk:DataGridTemplateColumn.CellTemplate>
                    <sdk:DataGridTemplateColumn.CellEditingTemplate>
                        <DataTemplate>
                            <TextBox Text="{Binding Mode=TwoWay, Path=text}"></TextBox>
                        </DataTemplate>

                    </sdk:DataGridTemplateColumn.CellEditingTemplate>
                </sdk:DataGridTemplateColumn>            </sdk:DataGrid.Columns>
        
        </sdk:DataGrid>

cs代码

       private void dataGrid1_RowEditEnded(object sender, DataGridRowEditEndedEventArgs e)
       {
           CData c = e.Row.DataContext as CData;
           Service1Client s = new Service1Client();
           s.EditCDataCompleted += new EventHandler<EditCDataCompletedEventArgs>(s_EditCDataCompleted);
           s.EditCDataAsync(c);

       }

       void s_EditCDataCompleted(object sender, EditCDataCompletedEventArgs e)
       {
           if (e.Result)
               System.Windows.Browser.HtmlPage.Window.Alert("成功");
           else
               System.Windows.Browser.HtmlPage.Window.Alert("失败");
       }

然后测试 显示列表后 双击一个行

然后点击DataGrid边框 结束编辑状态


原创粉丝点击