一,效果图:
二,editeGridview.aspx源文件:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="editeGridview.aspx.cs" Inherits="editeGridview" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView runat="server" ID="EditGridview"
Width="600px"
DataKeyNames="ID" AutoGenerateColumns="False"
onrowcancelingedit="EditGridview_RowCancelingEdit"
onrowdatabound="EditGridview_RowDataBound"
onrowdeleting="EditGridview_RowDeleting" onrowediting="EditGridview_RowEditing"
onrowupdating="EditGridview_RowUpdating" CellPadding="4"
ForeColor="#333333" GridLines="None">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:TemplateField HeaderText="NO">
<ItemTemplate>
<asp:Label runat="server" ID="lb_ID" Text='<%# Eval("ID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="班级">
<ItemTemplate>
<asp:Label runat="server" ID="lb_class" Text='<%# Eval("class") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txt_class" Width="80px" Text='<%# Eval("class") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="男生">
<ItemTemplate>
<asp:Label runat="server" ID="lb_boys" Text='<%# Eval("boys") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txt_boys" Width="80px" Text='<%# Eval("boys") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="女生">
<ItemTemplate>
<asp:Label runat="server" ID="lb_girls" Text='<%# Eval("girls") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txt_girls" Width="80px" Text='<%# Eval("girls") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="编辑">
<ItemTemplate>
<asp:LinkButton runat="server" ID="lbtn_edit" CommandName="edit" Text="编辑" ></asp:LinkButton>
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton runat="server" ID="lbtn_update" Text="修改" CommandName="update" CausesValidation="false"></asp:LinkButton>
<asp:LinkButton runat="server" ID="lbtn_cancel" Text="取消" CommandName="cancel" CausesValidation="false"></asp:LinkButton>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="删除">
<ItemTemplate>
<asp:LinkButton runat="server" ID="lbtn_delete" CommandName="delete" Text="删除" CausesValidation="false"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
<RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
<SortedAscendingCellStyle BackColor="#FDF5AC" />
<SortedAscendingHeaderStyle BackColor="#4D0000" />
<SortedDescendingCellStyle BackColor="#FCF6C0" />
<SortedDescendingHeaderStyle BackColor="#820000" />
</asp:GridView>
</div>
</form>
</body>
</html>
三。editeGridview.aspx.cs源文件:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using IsXMLUtility;
using System.Data;
public partial class editeGridview : System.Web.UI.Page
{
XmlHelper xmlHelper = new XmlHelper();
public DataTable dtsource
{
get
{
if (ViewState["dtsource"] == null)
return null;
else
return ViewState["dtsource"] as DataTable;
}
set
{
ViewState["dtsource"] = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
dtsource = xmlHelper.getDTXML("班级表");
InitGV();
}
}
private void InitGV()
{
DataTable dt = xmlHelper.getDTXML("班级表");
this.EditGridview.DataSource = dtsource.DefaultView;
EditGridview.DataBind();
}
protected void EditGridview_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType== DataControlRowType.DataRow)
{
}
}
protected void EditGridview_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
DataTable dt = dtsource;
int ID = int.Parse(EditGridview.DataKeys[e.RowIndex].Values["ID"].ToString())-1;
TextBox txt_class = EditGridview.Rows[e.RowIndex].FindControl("txt_class") as TextBox;
TextBox txt_boys = EditGridview.Rows[e.RowIndex].FindControl("txt_boys") as TextBox;
TextBox txt_girls = EditGridview.Rows[e.RowIndex].FindControl("txt_girls") as TextBox;
dt.Rows[ID]["class"] = txt_class.Text;
dt.Rows[ID]["boys"] = txt_boys.Text;
dt.Rows[ID]["girls"] = txt_girls.Text;
dtsource = dt;
EditGridview.EditIndex = -1;
InitGV();
}
protected void EditGridview_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int ID =int.Parse( EditGridview.DataKeys[e.RowIndex].Values["ID"].ToString())-1;
dtsource.Rows.RemoveAt(ID);
InitGV();
}
protected void EditGridview_RowEditing(object sender, GridViewEditEventArgs e)
{
EditGridview.EditIndex = e.NewEditIndex;
InitGV();
}
protected void EditGridview_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
EditGridview.EditIndex = -1;
InitGV();
}
}
四,班级表
<?xml version="1.0" encoding="utf-8" ?>
<config>
<Header col1="class" col2="ID" col3="class_name" col4="year" col5="grade" col6="boys" col7="girls"></Header>
<row col1="一五班" col2="01" col3="实验班" col4="2013" col5="初中" col6="20" col7="30"></row>
<row col1="一六班" col2="02" col3="奥数班" col4="2013" col5="初中" col6="25" col7="60" ></row>
<row col1="一六班" col2="03" col3="阳光班" col4="2013" col5="初中" col6="69" col7="48"></row>
</config>
五。XmlHelper.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Xml;
namespace IsXMLUtility
{
/// <summary>
///XmlHelper 的摘要说明
/// </summary>
public class XmlHelper
{
public XmlHelper()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
public DataTable getDTXML(string xmlname)
{
DataTable result = new DataTable();
string fileName = HttpContext.Current.Request.PhysicalApplicationPath + "\\Xml\\" + xmlname + ".xml";//xml的物理路径
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(fileName);
XmlNodeList xWitsTablesList = xmlDoc.SelectNodes("/config");
foreach (XmlNode xOracleNode in xWitsTablesList)
{
foreach (XmlNode node2 in xOracleNode.ChildNodes)
{
if (node2.Name == "Header")
{
// //绑定表头
foreach (XmlNode node3 in node2.Attributes)
{
result.Columns.Add(node3.Value);
}
}
else
{
//数据行
int i = 0;//列标志
DataRow dr = result.NewRow();
foreach (XmlNode node4 in node2.Attributes)
{
dr[i] = node4.Value.ToString();
i++;
}
result.Rows.Add(dr);
}
}
}
return result;
}
/// <summary>
///
/// </summary>
/// <param name="xmlname">xml名字</param>
/// <param name="Header">序号列名字</param>
/// <param name="colsNumber">序号开始编号</param>
/// <returns></returns>
public DataTable getDTXML(string xmlname, string Header, int colsNumber)
{
DataTable result = new DataTable();
if (Header == "")
Header = "N0";
if (colsNumber < 0)
colsNumber = 1;
result.Columns.Add(Header);
string fileName = HttpContext.Current.Request.PhysicalApplicationPath + "\\Xml\\" + xmlname + ".xml";//xml的物理路径
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(fileName);
XmlNodeList xWitsTablesList = xmlDoc.SelectNodes("/config");
foreach (XmlNode xOracleNode in xWitsTablesList)
{
foreach (XmlNode node2 in xOracleNode.ChildNodes)
{
if (node2.Name == "Header")
{
//绑定表头
foreach (XmlNode node3 in node2.Attributes)
{
result.Columns.Add(node3.Value);
}
}
else
{
//数据行
int i = 1;//列标志
DataRow dr = result.NewRow();
dr[0] = colsNumber;
foreach (XmlNode node4 in node2.Attributes)
{
dr[i] = node4.Value.ToString();
i++;
}
colsNumber++;
result.Rows.Add(dr);
}
}
}
return result;
}
}
}