FineUI 官方论坛

标题: 后台click调用Grid1.AddNewRecord()方法,正常显示,无法取行值。 [打印本页]

作者: 夜精灵    时间: 2013-10-16 00:13
标题: 后台click调用Grid1.AddNewRecord()方法,正常显示,无法取行值。
后台click调用Grid1.AddNewRecord()方法添加行数据,正常显示,无法取行值。
作者: 夜精灵    时间: 2013-10-16 00:14
求帮助。
作者: 夜精灵    时间: 2013-10-16 08:07
protected void Button6_Click(object sender, EventArgs e)
    {


        if (DatePicker4.Text == "")
        {
            Alert.ShowInTop("请添入作业日期");
        }
        else
        {

         

                string deleteScript = GetDeleteScript();
                JObject defaultObj = new JObject();
                defaultObj.ToString(Newtonsoft.Json.Formatting.None);
                defaultObj.Add("flrq", this.DatePicker1.Text);
                defaultObj.Add("mlh", this.TextBox6.Text);
                defaultObj.Add("cc", this.DropDownList2.SelectedText);
                defaultObj.Add("zdz", this.TextBox7.Text);
                defaultObj.Add("zyrq", this.DatePicker4.Text);
                defaultObj.Add("zylb", this.DropDownList3.SelectedValue);
                defaultObj.Add("zycz", this.DropDownList4.SelectedValue);
                defaultObj.Add("zycl", this.DropDownList5.SelectedValue);
                defaultObj.Add("zyc", this.DropDownList6.SelectedValue);
                defaultObj.Add("bz", this.TextBox9.Text);
                //  defaultObj.Add("Delete", String.Format("<a href=\"javascript:;\" onclick=\"{0}\"><img src=\"{1}\"/></a>", deleteScript, IconHelper.GetResolvedIconUrl(Icon.Delete)));
                defaultObj.Add("Delete", String.Format("<a href=\"javascript:;\" onclick=\"{0}\"><img src=\"{1}\"/></a>", deleteScript, IconHelper.GetResolvedIconUrl(Icon.Delete)));

          //  Button6.OnClientClick=Grid1.GetAddNewRecordReference(defaultObj, false);
               this.Grid1.AddNewRecord(defaultObj, false);
                DataTable table = GetDataTable();
                Grid1.DataSource = table;
                Grid1.DataBind();

            
         //   DatePicker4.Text = "";
        }

            
   //List<Dictionary<string, string>> newAddedList = Grid1.GetNewAddedList();
   //for (int i = newAddedList.Count - 1; i >= 0; i--)
   //{
   //    TextBox8.Text = TextBox8.Text + newAddedList.Count.ToString();
   
   //}
    }
作者: 凤凰涅盘ing    时间: 2013-10-16 09:30
我也遇到这个问题了~~困绕了很久~~
http://fineui.com/bbs/forum.php? ... tid=3986&extra=

后来,我想到变通的方法,但是目前只差一步,不知道js在客户端为什么总报错。
http://fineui.com/bbs/forum.php? ... tid=4104&extra=
如果你能找出原因,就所有问题解决了。
作者: yygy    时间: 2013-10-16 10:02
      var count = Grid2.view.ds.data.length; //行数
      for (var i = 0; i < count; i++) {           
            var r = "第" + (i+1).toString() + "行,";
            var s1 = Grid2.getStore().getAt(i).data["编号"].toString();
                if (s1 == "") {
                alert(r + "编号不能空");
                return;
            }
       }

作者: 夜精灵    时间: 2013-10-16 11:01
本帖最后由 夜精灵 于 2013-10-16 13:50 编辑

谢谢,就是我太笨,不会。呵
作者: 夜精灵    时间: 2013-10-16 13:52
求帮助,  添加的数据正常显示。  想保存数据到数据库时,取不到值。  求帮助。
作者: yygy    时间: 2013-10-16 13:58
var count = Grid2.view.ds.data.length; //行数
      for (var i = 0; i < count; i++) {           
            var r = "第" + (i+1).toString() + "行,";
            var s1 = Grid2.getStore().getAt(i).data["编号"].toString();
                if (s1 == "") {
                alert(r + "编号不能空");
                return;
            }
       }

这样还不能取值吗?
作者: 夜精灵    时间: 2013-10-16 14:54
能力太差,  不会用。  能有在后台直接取前台数据的方法吗?
作者: yygy    时间: 2013-10-16 19:56
我是在JS里取值的。后台就不会.
作者: 夜精灵    时间: 2013-10-16 21:07
DataTable table = new DataTable();
        table.Columns.Add(new DataColumn("flrq", typeof(String)));
        table.Columns.Add(new DataColumn("mlh", typeof(String)));
        table.Columns.Add(new DataColumn("cc", typeof(String)));
        table.Columns.Add(new DataColumn("zdz", typeof(String)));
        table.Columns.Add(new DataColumn("zyrq", typeof(String)));
        table.Columns.Add(new DataColumn("zylb", typeof(String)));
        table.Columns.Add(new DataColumn("zycz", typeof(String)));
        table.Columns.Add(new DataColumn("zycl", typeof(String)));
        table.Columns.Add(new DataColumn("zyc", typeof(String)));
        table.Columns.Add(new DataColumn("bz", typeof(String)));
        table.Columns.Add(new DataColumn("Delete", typeof(String)));
        this.ViewState["table"] = table;

        return table;
作者: 夜精灵    时间: 2013-10-16 21:08
没办法,建立临时表,  在绑定到GRID1中。  再从GRID1中取值正常。    算是想要的结果。  
作者: 凤凰涅盘ing    时间: 2013-10-17 08:49
yygy 发表于 2013-10-16 10:02
var count = Grid2.view.ds.data.length; //行数
      for (var i = 0; i < count; i++) {          ...

哥~~这是客户端的JS啊~关键是不知道如何在服务器端得到新增行的行号。
这种情况的应用在于:
当用户添加了两笔新记录,还没有保存到录数据库时,然后又想修改第一笔记录的内容。当根据业务逻辑,当记录被修改时在要服务器端修改其中谋个字段的内容。这样,因为找到新增加行的行号,就无法完成了。
作者: 凤凰涅盘ing    时间: 2013-10-17 08:51
yygy 发表于 2013-10-16 19:56
我是在JS里取值的。后台就不会.

现在我使用的方法是,在按钮的客户端事件里,把添加行的值都取出来放在一个隐藏文框里上传到服务器,然后在服务器里再分解这个字符串。
作者: yygy    时间: 2013-10-17 09:27
我这样做:
在Grid隐藏一列,值为Index+=1
       defaultObj.Add("打印", String.Format("<a href=\"javascript:;\" onclick=\"index='{0}'; document.getElementById('Button20').click(); \"><img src=\"{1}\"/></a>", Index, IconHelper.GetResolvedIconUrl(Icon.PrinterColor)));
在JS全局变量index,这样单击时就知道index的值,然后遍历Grid对比index,这样就可以获取第几行.

作者: 凤凰涅盘ing    时间: 2013-10-17 12:12
夜精灵 发表于 2013-10-16 21:08
没办法,建立临时表,  在绑定到GRID1中。  再从GRID1中取值正常。    算是想要的结果。   ...

这样,还是避免不了,回调时会重新表格的命运啊~
作者: 夜精灵    时间: 2013-10-23 20:44
谢谢,学习了。
作者: Fine!    时间: 2014-4-21 20:41
一样没解决、
winform中这就不是问题。。




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