`

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

阅读更多

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

1、XML数据源的文件名为Tables.xml,结构如下:

<Tables> <SOP> <PitchY>0.20 </PitchY> <T>0.30</T> <B>0.40 </B> <WM>0.40 </WM> <WM1>1 </WM1> <WP>0.50 </WP> <WP1>0 </WP1> <R>0.06</R> <LM>L-1 </LM> <WCM>0.22</WCM> <WCP>0.37 </WCP> </SOP> <SOP> <PitchY>3.00 </PitchY> <T>0.99</T> <B>0.87 </B> <WM>0.33 </WM> <WM1>1 </WM1> <WP>1.00 </WP> <WP1>1 </WP1> <R>0.05 </R> <LM>L </LM> <WCM>0.77 </WCM> <WCP>0.80 </WCP> </SOP> <DCHIP> <BodySize>3000 </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>6785</BodySize> <L>1.50 </L> <W>5.30 </W> <D>5.30</D> <T>0.99 </T> <S>0.15 </S> <R>0.05 </R> <Wm>9.20 </Wm> <Lm>1.30 </Lm> </DCHIP> </Tables>

2、具体代码

<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> 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; //找到对应与DataSet行 dr = ds.Tables[ddlShapeType.SelectedValue].Rows[row.DataItemIndex]; 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(); }
0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics