FineUI Gird单元格编辑 保存修改的数据到数据库 LINQ



前端Grid控件的定义:

注意SortField="BIN" SortDirection="ASC" 排序相关属性定义,如果服务器代码不排序,应该取消该属性以免报错。


DataKeyNames 这个属性是定义关键字段,如果有多个关键字段,可以依次写入,这里例子只有一个BIN字段。

 <f:Grid ID="Grid1" ShowBorder="false" ShowHeader="false"   Width="850px" SortField="BIN" SortDirection="ASC"
                                        PageSize="15" AllowPaging="true" IsDatabasePaging="true" OnPageIndexChange="Grid1_PageIndexChange"  
                                        runat="server" DataKeyNames="BIN" AllowCellEditing="true" ClicksToEdit="2"  AllowSorting="true">


服务器处理前端控件传回的修改数据代码:


详细的说明如下

1.  传回数据类型是一个大字典里面再放小字典的变量类型,这里要清楚Dictionary<int, Dictionary<string, object>>,这个int 是前端定义DataKeyNames关键字数值的行号,

通过这个int我们可以锁定前端表格中哪行被修改。小字典中放的是【字段名称】和【该字段被修改后的数据】。


2.  我们先拿到数据库的表 var q = from c in db.MM_BIN select c; //数据库表对象


3. 用大字典的int在Grid中得到行号对应的那一行中的关键字  string s_BIN   = mytools.s(Grid1.DataKeys[DataKeysLine][0]);


4. 然后我们遍历数据库表,用关键字去锁定数据库中的行,修改之。


 //保存修改数据 仓位
            Dictionary<int, Dictionary<string, object>> modifiedDict = Grid1.GetModifiedDict();   

            if (modifiedDict.Count > 0)
            {

                    var q = from c in db.MM_BIN select c; //数据库表对象                    
                
                    foreach (var one in modifiedDict)
                    {

                        int DataKeysLine = one.Key;  //DataKeys数组的序号 [one.Key],WERKS,LGORT,BIN
     
                        string s_BIN   = mytools.s(Grid1.DataKeys[DataKeysLine][0]);
                    
                        Dictionary<string, object> dic = one.Value;

                        foreach (var row in q)
                            {

                                if ((DropDownList_WERKS.SelectedItem.Text == row.WERKS) && (DropDownList_LGORT.SelectedItem.Value == row.LGORT) && (s_BIN == row.BIN))
                                {
                                    if (dic.ContainsKey("BIN")) row.BIN = mytools.s(dic["BIN"]);
                                    if (dic.ContainsKey("BIN_NAME")) row.BIN_NAME = mytools.s(dic["BIN_NAME"]);
                                    if (dic.ContainsKey("BIN_MAX")) row.BIN_MAX = mytools.d(dic["BIN_MAX"]);
                                    if (dic.ContainsKey("BIN_MIN")) row.BIN_MIN = mytools.d(dic["BIN_MIN"]);
                                    if (dic.ContainsKey("MEINS")) row.MEINS = mytools.s(dic["MEINS"]);
                                    if (dic.ContainsKey("STORAGE_TYPE")) row.STORAGE_TYPE = mytools.s(dic["STORAGE_TYPE"]);

                                    if (dic.ContainsKey("BINPOP")) row.BINPOP = mytools.s(dic["BINPOP"]);

                                    row.ERSDA = mytools.t(DateTime.Now.ToString("yyyy-MM-dd"));
                                    row.ZUSER = mytools.s(Session["username"].ToString());
                                      
                                    break;                        
                                }
                            }
                    }

                    db.SubmitChanges();
                    BindGrid1(); 
            }

示意图以后放出。。。。。。




评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘欣的博客

你将成为第一个打赏博主的人!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值