Exemplo n.º 1
0
        /// <summary>
        ///  此函数处理下列场合:
        ///  记录每行每列的状态到HidState.
        /// </summary>
        protected void btnAdd_Click(object sender, EventArgs e)
        {
            int i = 0;
            DBProcess p = new DBProcess();
            DataTable dt = p.GetDataTable(false);
            TextBox tb1 = null;
            TextBox tb2 = null;
            StringBuilder sbu = new StringBuilder();
            CheckBox chkbox = null;

            // 维持JSON状态.
            sbu.Append("[");

            for (; i < dt.Rows.Count; ++i)
            {
                // 循环单元格
                for (int j = 2; j < GridView1.HeaderRow.Cells.Count; ++j)
                {
                    tb1 = GridView1.Rows[i].FindControl("tbName") as TextBox;
                    tb2 = GridView1.Rows[i].FindControl("tbAddress") as TextBox;

                    sbu.Append("{'Index':'" + (i * GridView1.HeaderRow.Cells.Count + j));

                    //不添加, 表示无变更或添加
                    if (dt.Rows[i].RowState !=DataRowState.Added)
                    {
                        // 决定db中第一个单元格是否变更
                        if (j == 2)
                        {
                            if (!tb1.Text.Equals(dt.Rows[i][j - 1, DataRowVersion.Original]))
                            {
                                dt.Rows[i].BeginEdit();
                                sbu.Append("','Color':'blue',");
                                dt.Rows[i][j - 1] = tb1.Text;
                            }
                            else
                            {
                                sbu.Append("','Color':'',");
                            }
                        }
                        else
                        {
                            // 决定db中第二个单元格是否变更
                            if (!tb2.Text.Equals(dt.Rows[i][j - 1, DataRowVersion.Original]))
                            {
                                dt.Rows[i].BeginEdit();
                                sbu.Append("','Color':'blue',");
                                dt.Rows[i][j - 1] = tb2.Text;
                            }
                            else
                            {
                                sbu.Append("','Color':'',");
                            }
                        }
                        dt.Rows[i].EndEdit();
                    }

                    else
                    {
                        // 添加行标绿
                        if (dt.Rows[i].RowState == DataRowState.Added)
                        {
                            sbu.Append("','Color':'green',");
                        }
                        // 其他行保持原色
                        else
                        {
                            sbu.Append("','Color':'',");
                        }
                    }

                    // 保持Delete语句
                    chkbox = GridView1.Rows[i].FindControl("chkDelete") as CheckBox;
                    sbu.Append("'Deleted':'" + chkbox.Checked + "'},");
                }
            }

            DataRow r = dt.NewRow();
            r["PersonName"] = (GridView1.FooterRow.FindControl("tbNewName") as TextBox).Text;
            r["PersonAddress"] = (GridView1.FooterRow.FindControl("tbNewAddress") as TextBox).Text;
            dt.Rows.Add(r);
            sbu.Append("{'Index':'" + (i * GridView1.HeaderRow.Cells.Count
                            + 2) + "','Color':'green','Deleted':'false'},");
            sbu.Append("{'Index':'" + (i * GridView1.HeaderRow.Cells.Count
                            + 3) + "','Color':'green','Deleted':'false'}");
            sbu.Append("]");
            p.WriteDataTable(dt);
            HidState.Value = sbu.ToString();
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }
Exemplo n.º 2
0
        /// <summary>
        ///  此函数处理下列场合:
        ///  记录每行每列的状态到HidState.
        /// </summary>
        protected void btnAdd_Click(object sender, EventArgs e)
        {
            int           i      = 0;
            DBProcess     p      = new DBProcess();
            DataTable     dt     = p.GetDataTable(false);
            TextBox       tb1    = null;
            TextBox       tb2    = null;
            StringBuilder sbu    = new StringBuilder();
            CheckBox      chkbox = null;

            // 维持JSON状态.
            sbu.Append("[");

            for (; i < dt.Rows.Count; ++i)
            {
                // 循环单元格
                for (int j = 2; j < GridView1.HeaderRow.Cells.Count; ++j)
                {
                    tb1 = GridView1.Rows[i].FindControl("tbName") as TextBox;
                    tb2 = GridView1.Rows[i].FindControl("tbAddress") as TextBox;

                    sbu.Append("{'Index':'" + (i * GridView1.HeaderRow.Cells.Count + j));

                    //不添加, 表示无变更或添加
                    if (dt.Rows[i].RowState != DataRowState.Added)
                    {
                        // 决定db中第一个单元格是否变更
                        if (j == 2)
                        {
                            if (!tb1.Text.Equals(dt.Rows[i][j - 1, DataRowVersion.Original]))
                            {
                                dt.Rows[i].BeginEdit();
                                sbu.Append("','Color':'blue',");
                                dt.Rows[i][j - 1] = tb1.Text;
                            }
                            else
                            {
                                sbu.Append("','Color':'',");
                            }
                        }
                        else
                        {
                            // 决定db中第二个单元格是否变更
                            if (!tb2.Text.Equals(dt.Rows[i][j - 1, DataRowVersion.Original]))
                            {
                                dt.Rows[i].BeginEdit();
                                sbu.Append("','Color':'blue',");
                                dt.Rows[i][j - 1] = tb2.Text;
                            }
                            else
                            {
                                sbu.Append("','Color':'',");
                            }
                        }
                        dt.Rows[i].EndEdit();
                    }

                    else
                    {
                        // 添加行标绿
                        if (dt.Rows[i].RowState == DataRowState.Added)
                        {
                            sbu.Append("','Color':'green',");
                        }
                        // 其他行保持原色
                        else
                        {
                            sbu.Append("','Color':'',");
                        }
                    }

                    // 保持Delete语句
                    chkbox = GridView1.Rows[i].FindControl("chkDelete") as CheckBox;
                    sbu.Append("'Deleted':'" + chkbox.Checked + "'},");
                }
            }

            DataRow r = dt.NewRow();

            r["PersonName"]    = (GridView1.FooterRow.FindControl("tbNewName") as TextBox).Text;
            r["PersonAddress"] = (GridView1.FooterRow.FindControl("tbNewAddress") as TextBox).Text;
            dt.Rows.Add(r);
            sbu.Append("{'Index':'" + (i * GridView1.HeaderRow.Cells.Count
                                       + 2) + "','Color':'green','Deleted':'false'},");
            sbu.Append("{'Index':'" + (i * GridView1.HeaderRow.Cells.Count
                                       + 3) + "','Color':'green','Deleted':'false'}");
            sbu.Append("]");
            p.WriteDataTable(dt);
            HidState.Value       = sbu.ToString();
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }