FineUI 官方论坛

标题: grid单元格编辑后能执行保存但无法重新绑定数据,无法刷... [打印本页]

作者: 世界没有真情    时间: 2013-7-18 20:30
标题: grid单元格编辑后能执行保存但无法重新绑定数据,无法刷...
本帖最后由 世界没有真情 于 2013-7-18 20:56 编辑

这里是保存代码
protected void btnSave_click(object sender, EventArgs e)
    {
        // 1. 先修改的现有数据
        Dictionary<int, Dictionary<string, string>> modifiedDict = Grid1.GetModifiedDict();
        for (int i = 0, count = Grid1.Rows.Count; i < count; i++)
        {
            if (modifiedDict.ContainsKey(i))
            {
                Dictionary<string, string> rowDict = modifiedDict;
                string id = Grid1.Rows.DataKeys[0].ToString();
                string courseName = "", courseDesc = "";
                if (rowDict.ContainsKey("course_Name"))
                {
                    courseName = rowDict["course_Name"];
                }
                else
                {
                    courseName = Grid1.Rows.Values[0];
                }
                if (rowDict.ContainsKey("course_Desc"))
                {
                    courseDesc = rowDict["course_Desc"];
                }
                else
                {
                    courseDesc = Grid1.Rows.Values[1];
                }
               
                DALCourse.update(courseName, courseDesc, id);
            }
        }
        
        // 2. 再新增数据
        //List<Dictionary<string, string>> newAddedList = Grid1.GetNewAddedList();
        //for (int i = newAddedList.Count - 1; i >= 0; i--)
        //{
            
        //}
        BindGrid();
        Alert.Show("数据保存成功",MessageBoxIcon.Information);
        
    }

很奇怪,如果再点击添加数据,再保存就能刷新 grid了


作者: sanshi    时间: 2013-7-19 08:22
使用空项目创建重现问题的示例,有助于问题的解决。要不然别人也看不懂
作者: 世界没有真情    时间: 2013-7-19 08:30
本帖最后由 世界没有真情 于 2013-7-19 08:31 编辑
sanshi 发表于 2013-7-19 08:22
使用空项目创建重现问题的示例,有助于问题的解决。要不然别人也看不懂


你看不懂吗?我重现过了,我把示例中的代码复制过去,没问题,能刷新grid,但那是没传参的。但是我就添加了一行代码, DALCourse.update(courseName, courseDesc, id);
有传递参数的,它能执行保存操作,调试过程中完全没有问题。就是不知道为什么没刷新grid
作者: sanshi    时间: 2013-7-19 08:31
世界没有真情 发表于 2013-7-19 08:30
你看不懂吗?我重现过了,我把示例中的代码复制过去,没问题,能刷新grid,但那是没传参的。但是我就添加 ...
  1. DALCourse.update(courseName, courseDesc, id);
复制代码
这是你的代码,别人怎么知道哪里出错了。给出完整示例有助于问题解决
作者: 世界没有真情    时间: 2013-7-19 08:44
sanshi 发表于 2013-7-19 08:31
这是你的代码,别人怎么知道哪里出错了。给出完整示例有助于问题解决

  1. <P>页面代码:</P>
  2. <P><x:PageManager ID="PageManager1" runat="server" />
  3.     <x:Grid ID="Grid1" ShowBorder="true" ShowHeader="true" Title="课程管理" Width="800px" Height="465px"
  4.         runat="server" DataKeyNames="c_Id"  AllowCellEditing="true" EnableColumnLines="true"  ClicksToEdit="2"    EnableRowNumber="True" OnRowCommand="Grid1_RowCommand" AllowPaging="True"  OnPageIndexChange="Grid1_PageIndexChange" PageSize="15">
  5.         <Toolbars>
  6.             <x:Toolbar ID="Toolbar1" runat="server" >
  7.                 <Items>
  8.                     <x:Button ID="btnNew" Text="新增数据" Icon="Add"  EnablePostBack="false" runat="server">
  9.                     </x:Button>
  10.                     <x:ToolbarFill ID="ToolbarFill1" runat="server">
  11.                     </x:ToolbarFill>
  12.                 </Items>
  13.             </x:Toolbar>
  14.         </Toolbars>
  15.         <Columns>
  16.             <x:RenderField  ColumnID="course_Name" Width="200px"  DataField="course_Name" FieldType="String"
  17.                 HeaderText="课 程">
  18.                 <Editor>
  19.                     <x:TextBox ID="tbxEditorName"  Required="true" runat="server">
  20.                     </x:TextBox>
  21.                 </Editor>
  22.             </x:RenderField>
  23.             <x:RenderField   ExpandUnusedSpace="true" ColumnID="course_Desc"  DataField="course_Desc" FieldType="String"
  24.                 HeaderText="课程备注">
  25.                 <Editor>
  26.                     <x:TextBox ID="tbxEditorDesc"    runat="server">
  27.                     </x:TextBox>
  28.                 </Editor>
  29.             </x:RenderField>
  30.            
  31.            <x:LinkButtonField HeaderText="删 除" Width="50px" ConfirmText="你确定要这么做么?"
  32.                 CommandName="Delete" Icon="Delete" ConfirmTarget="Parent" />
  33.             
  34.         </Columns>
  35.     </x:Grid>
  36.     <br />
  37.     <x:Button runat="server" ID="btnSave" Text="保存数据" OnClick="btnSave_click"></x:Button></P>
  38. <P> </P>
  39. <P>后台代码:</P>
  40. <P>public partial class admin_a_CourseManage : System.Web.UI.Page
  41. {
  42.     protected void Page_Load(object sender, EventArgs e)
  43.     {
  44.       
  45.         if (!IsPostBack)
  46.         {
  47.             InitInsert();
  48.             BindGrid();
  49.         }
  50.         
  51.     }
  52.    
  53.     private void BindGrid()
  54.     {
  55.         DataTable table = DALCourse.dtList();</P>
  56. <P>        Grid1.DataSource = table;
  57.         Grid1.DataBind();
  58.     }
  59.    
  60.     //点击新增一条显示数据
  61.     private void InitInsert()
  62.     {
  63.         JObject defaultObj = new JObject();
  64.         defaultObj.Add("course_Name", "请输入课程名称");
  65.         defaultObj.Add("course_Desc", "描述");
  66.         // 第一行新增一条数据
  67.         btnNew.OnClientClick = Grid1.GetAddNewRecordReference(defaultObj,false);
  68.     }</P>
  69. <P>    //数据保存
  70.     protected void btnSave_click(object sender, EventArgs e)
  71.     {
  72.         
  73.         Dictionary<int, Dictionary<string, string>> modifiedDict = Grid1.GetModifiedDict();
  74.         for (int i = 0, count = Grid1.Rows.Count; i < count; i++)
  75.         {
  76.             if (modifiedDict.ContainsKey(i))
  77.             {
  78.                
  79.                 Dictionary<string, string> rowDict = modifiedDict[i];
  80.                 string id = Grid1.Rows[i].DataKeys[0].ToString();
  81.                 string courseName = "", courseDesc = "";
  82.                 if (rowDict.ContainsKey("course_Name"))
  83.                 {
  84.                     courseName = rowDict["course_Name"];
  85.                 }
  86.                 else
  87.                 {
  88.                     courseName = Grid1.Rows[i].Values[0];
  89.                 }
  90.                 if (rowDict.ContainsKey("course_Desc"))
  91.                 {
  92.                     courseDesc = rowDict["course_Desc"];
  93.                 }
  94.                 else
  95.                 {
  96.                     courseDesc = Grid1.Rows[i].Values[1];
  97.                 }
  98.                 DALCourse.update(courseName, courseDesc, id);
  99.             }
  100.         }</P>
  101. <P>        // 2. 再新增数据
  102.         List<Dictionary<string, string>> newAddedList = Grid1.GetNewAddedList();
  103.         for (int i = newAddedList.Count - 1; i >= 0; i--)
  104.         {
  105.             
  106.             DALCourse.Insert(newAddedList[i]["course_Name"], newAddedList[i]["course_Desc"]);
  107.         }
  108.         BindGrid();
  109.       
  110.             Alert.Show("数据保存成功");
  111.         
  112.     }</P>
  113. <P>    //行命令--删除
  114.     protected void Grid1_RowCommand(object sender, FineUI.GridCommandEventArgs e)
  115.     {
  116.         if (e.CommandName == "Delete")
  117.         {
  118.             string id = Grid1.Rows[e.RowIndex].DataKeys[0].ToString();
  119.             DALCourse.Delete(id);
  120.             BindGrid();
  121.             Alert.ShowInParent("删除数据成功!");
  122.         }
  123.     }</P>
  124. <P>    //分页
  125.     protected void Grid1_PageIndexChange(object sender, FineUI.GridPageEventArgs e)
  126.     {
  127.         Grid1.PageIndex = e.NewPageIndex;
  128.     }</P>
  129. <P>}</P>
  130. <P> </P>
  131. <P>DALCourse类 中的更新代码(update 方法):</P>
  132. <P>/// <summary>
  133.     /// 更新一条数据
  134.     /// </summary>
  135.     /// <param name="courseName">课程名称</param>
  136.     /// <param name="courseDesc">课程描述</param>
  137.     /// <param name="id"></param>
  138.     public static void update(string courseName, string courseDesc,object id)
  139.     {
  140.         string sql = "update t_course set <A href="mailto:course_Name=@courseName,course_Desc=@courseDesc">course_Name=@courseName,course_Desc=@courseDesc</A> where <A href="mailto:c_Id=@id">c_Id=@id</A>";
  141.         SqlParameter[] paras = new SqlParameter[] {
  142.             new SqlParameter("@courseName", courseName),
  143.              new SqlParameter("@courseDesc", courseDesc) ,
  144.               new SqlParameter("@id", id)
  145.         };
  146.         helper.Exexute(sql, paras);
  147.     }</P>
  148. <P> </P>
  149. <P> </P>
  150. <P> </P>
  151. <P> </P>
  152. <P> </P>
复制代码
问题:::代码执行完全没有问题,新增一行数据点击保存也没有问题,但是修改一行数据,再保存,能执行方法,已经更新回数据库了,但是页面没更新,如果方法的参数改成具体值,那也没有问题

作者: 世界没有真情    时间: 2013-7-19 12:18
sanshi 发表于 2013-7-19 08:31
这是你的代码,别人怎么知道哪里出错了。给出完整示例有助于问题解决

能帮忙看看什么问题吗?
作者: 小龙GG    时间: 2013-8-8 11:21
我连保存都不行。。。

List<Dictionary<string, string>> newAddedList = Grid1.GetNewAddedList();
Dictionary<int, Dictionary<string, string>> modifiedDict = Grid1.GetModifiedDict();

获取到的数量都是为0.
作者: 小龙GG    时间: 2013-8-8 13:31
小龙GG 发表于 2013-8-8 11:21
我连保存都不行。。。

List newAddedList = Grid1.GetNewAddedList();

问题解决了!下载extjs_for_fineui_v3.3.1.1.zip覆盖 即可。
作者: 世界没有真情    时间: 2013-8-9 11:12
小龙GG 发表于 2013-8-8 13:31
问题解决了!下载extjs_for_fineui_v3.3.1.1.zip覆盖 即可。

是重新引用那个插件就行?
作者: 小龙GG    时间: 2013-8-9 11:37
世界没有真情 发表于 2013-8-9 11:12
是重新引用那个插件就行?

不是DLL。

是这里:

【新提醒】获取适用于 FineUI 的 ExtJS 库!! - FineUI 交流讨论区 - FineUI 官方论坛 - Powered by Discuz!
http://fineui.com/bbs/forum.php? ... &extra=page%3D1
作者: 世界没有真情    时间: 2013-8-10 17:26
喔,FineUI 的 ExtJS 库啊,恩




欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4