c#自动将值设置为DataRow [英] c# Set value to a DataRow automatically

查看:206
本文介绍了c#自动将值设置为DataRow的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想做的是,如果更改了单元格编号3,则更改行的第四个单元格的值.我的网格有一个EditEnding方法.这是我下面的方法.我真的不知道如何完成

What I want to do is to change value of row's forth cell if cell number 3 is changed. I have an EditEnding method for my grid. That's my method below. I don't really know how to finish it

这是网格定义:

<DataGrid x:Name="dataGrid1"... CellEditEnding="dataGrid1_EditEnding">

和方法:

private void dataGrid1_EditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
    // initializing DataRowView from my datagrid
    DataRowView drv = (DataRowView)dataGrid1.CurrentItem;

    // checking if there were any changes
    if (drv.Row[3, DataRowVersion.Original] != drv.Row[3])
    {
       //set value to cell
    }
}

推荐答案

好吧,我做了我的工作,只是忘了在这里发布.

Well, i did my stuff, just forget to post it here.

首先,我是通过EditEnding事件来完成的,它看起来像这样:

First I did it with EditEnding event, it looked like that:

private void dataGrid1_EditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
    DataRowView drv = (DataRowView)dataGrid1.CurrentItem;

    if (drv.Row[3, DataRowVersion.Original] != drv.Row[3])
    {
       rowView.Row.SetField(4, /* my logic here */);
    }
}

问题在于它仅在第二次编辑时才添加值.然后我改变了主意,并向我的DataTable添加了RowChanged事件,就像这样:

The problem was it was adding the value only on second edit. Then I changed my idea and added a RowChanged event to my DataTable, which was like that:

    static void dtSP_RowChanged(object sender, DataRowChangeEventArgs e)
    {
        bool temp = false;

        try
        {

            temp = e.Row[4, DataRowVersion.Original] == e.Row[4];
        }
        catch { }

        if (temp && int.Parse(e.Row[3].ToString()) != -1)
        {
            e.Row[4] = (/* my logic */);
        }
    }

该方法正进入无限循环(注意,第四行已更改).

The method was going into infinity loop (it was noticing, that fourth row had changed).

然后我看到了: http://www.windowsdevcenter.com/pub/a/dotnet/2003/05/26/datacolumn_expressions.html

我已经以一行长代码结束了:

I've ended with one line long code:

dtSP.Columns[4].Expression = "expression";

@blindmeis,我忘了提及我使用ADO.NET的情况,对不起

@blindmeis, I forgott to mention I use ADO.NET, sorry

这篇关于c#自动将值设置为DataRow的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆