首先在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边框 结束编辑状态