GridView绑定xml,增,删,改,取消

1、XML数据源的文件名为Table.xml,结构如下:
<Tables>
  <SOP>
    <PitchY>0.40 </PitchY>
    <T>0.40 </T>
    <B>0.40 </B>
    <WM>0.20 </WM>
    <WM1>0 </WM1>
    <WP>0.40 </WP>
    <WP1>0 </WP1>
    <R>0.05 </R>
    <LM>L-0.2 </LM>
    <WCM>0.18 </WCM>
    <WCP>0.37 </WCP>
  </SOP>
  <SOP>
    <PitchY>2.54 </PitchY>
    <T>0.70 </T>
    <B>0.80 </B>
    <WM>0.60 </WM>
    <WM1>1 </WM1>
    <WP>0.30 </WP>
    <WP1>1 </WP1>
    <R>0.05 </R>
    <LM>L </LM>
    <WCM>0.50 </WCM>
    <WCP>0.80 </WCP>
  </SOP>
  <DCHIP>
    <BodySize>1005 </BodySize>
    <L>0.50 </L>
    <W>0.60 </W>
    <D>0.40 </D>
    <T>0.20 </T>
    <S>0.05 </S>
    <R>0.05 </R>
    <Wm>0.53 </Wm>
    <Lm>0.45 </Lm>
  </DCHIP>
  <DCHIP>
    <BodySize>1608 </BodySize>
    <L>0.70 </L>
    <W>0.90 </W>
    <D>0.80 </D>
    <T>0.30 </T>
    <S>0.05 </S>
    <R>0.05 </R>
    <Wm>0.85 </Wm>
    <Lm>0.60 </Lm>
  </DCHIP>
  <DCHIP>
    <BodySize>5750 </BodySize>
    <L>1.50 </L>
    <W>5.30 </W>
    <D>4.10 </D>
    <T>0.70 </T>
    <S>0.15 </S>
    <R>0.05 </R>
    <Wm>5.20 </Wm>
    <Lm>1.30 </Lm>
  </DCHIP>
</Tables>

2、具体代码

        string xmlPath = "Calculation/Tables.xml";
       
      //恢复GridView正常状态
        private void ResetParameter()
        {
            gvParameter.EditIndex = -1;
            LoadParameter(ddlShapeType.SelectedValue);
        }

        //加载XML并显示在GridView里
        private void LoadParameter(string shapeType)
        {         
            DataSet dsRule = new DataSet();
            dsRule.ReadXml(xmlPath);

            DataTable dtRule = dsRule.Tables[shapeType];
           
            gvParameter.DataSource = dtRule;
            gvParameter.DataBind();
        }

        //新增事件
        protected void lnbAddNew_Click(object sender, EventArgs e)
        {
            if (ddlShapeType.SelectedValue.Length == 0)
            {
                lblMsg.Visible = true;
                lblMsg.Text = "Warning: Please select shape type !";
                return;
            }
            else if (gvParameter.Rows.Count == 0)
            {
                lblMsg.Visible = true;
                lblMsg.Text = "Warning: [" + ddlShapeType.SelectedValue + "] table not exists !";
                return;
            }               

            DataSet ds = new DataSet();
            ds.ReadXml(xmlPath);
            DataTable dt = ds.Tables[ddlShapeType.SelectedValue];

            DataRow dr = dt.NewRow();
            dt.Rows.Add(dr);

            ds.WriteXml(xmlPath);  //将修改写入Table.xml

            ResetParameter();
        }

      //编辑事件
        protected void gvParameter_RowEditing(object sender, GridViewEditEventArgs e)
        {
            gvParameter.EditIndex = e.NewEditIndex;
            LoadParameter(ddlShapeType.SelectedValue);

            GridViewRow row = gvParameter.Rows[e.NewEditIndex];

            //前面2列是Delete、Edit,故从第三列开始
            for (int i = 2; i < row.Cells.Count; i++)
            {
                TextBox tb = (TextBox)row.Cells[i].Controls[0];
                tb.Width = 50;
            }
        }

      //更新事件
        protected void gvParameter_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            GridViewRow row = gvParameter.Rows[e.RowIndex]; //获得当前行

            int numCell = row.Cells.Count;  //共几列单元格(包含Edit和Delete 2列)
            int currentRow = row.DataItemIndex; //对应DataSet对应的行索引

            DataSet ds = new DataSet();
            ds.ReadXml(xmlPath);
            DataRow dr;

            dr = ds.Tables[ddlShapeType.SelectedValue].Rows[row.DataItemIndex];  //找到对应与DataSet行

            string[] str = null;  //此数组定义表的列名

            switch (ddlShapeType.SelectedValue)
            {
                case "SOP":
                    {
                        str =new string[]{ "PitchY", "T", "B", "WM", "WM1", "WP", "WP1", "R", "LM", "WCM", "WCP" };
                        break;
                    }
                case "DCHIP":
                    {
                        str = new string[] { "BodySize", "L", "W", "D", "T", "S", "R", "Wm", "Lm" };
                        break;
                    }
            }

            int j = 0;
            //从第3列开始,前面有2列是Edit和Delete
            for (int i = 2; i < numCell; i++)
            {
                string cText = ((TextBox)row.Cells[i].Controls[0]).Text;

                dr[str[j]] = cText;

                j++;
            }

            ds.WriteXml(xmlPath);  //将修改写入Table.xml

            ResetParameter();
        }

        //取消修改
        protected void gvParameter_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            ResetParameter();
        }

      //删除事件
        protected void gvParameter_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            GridViewRow row = gvParameter.Rows[e.RowIndex];

            int curr = row.RowIndex;
            DataSet ds = new DataSet();
            ds.ReadXml(xmlPath);

            DataRow dr = ds.Tables[ddlShapeType.SelectedValue].Rows[curr];
            dr.Delete();
            ds.WriteXml(xmlPath);

            ResetParameter();
        }
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值