全部代码如下:
ASPX:
<%@PageLanguage="C#"ValidateRequest="false"AutoEventWireup="true"EnableViewState="false"
CodeFile="Default2.aspx.cs"Inherits="Default2"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headid="Head1"runat="server">
<title>利用GridView显示主细表并一次编辑明细表所有数据的例子</title>
<styletype="text/css">
td,div,a{font-size:12px}
</style>
<scripttype="text/javascript">
//<![CDATA[
functionShowHidden(sid,ev)
{
ev=ev||window.event;
vartarget=ev.target||ev.srcElement;
varoDiv=document.getElementById("div"+sid);
oDiv.style.display=oDiv.style.display=="none"?"block":"none";
target.innerHTML=oDiv.style.display=="none"?"显示":"隐藏";
}
//]]>
</script>
</head>
<body>
<formid="form1"runat="server">
<asp:GridViewID="MasterGridView"runat="server"AutoGenerateColumns="false"Width="780px"
BorderWidth="1"OnRowDataBound="MasterGridView_RowDataBound"DataKeyNames="id"
ShowHeader="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<divstyle="width:100%;padding:2px;font-weight:bold;background-color:#DEDEDE;
float:left">
<spanstyle="float:left">栏目名称:<%#Eval("Title")%></span><spanstyle="float:right;
color:Red;cursor:pointer"onclick="ShowHidden('<%#Eval("id")%>',event)">隐藏</span></div>
<divstyle="background-color:#FFF;padding-left:60px;clear:both"id="div<%#Eval("id")%>">
<asp:GridViewID="DetailGridView"runat="server"AutoGenerateColumns="false"ShowHeader="true"
HorizontalAlign="left"DataKeyNames="id"OnRowCommand="DetailGridView_RowCommand"
OnRowDeleting="DetailGridView_RowDeleting"Width="720px">
<HeaderStyleBackColor="#9999FF"/>
<Columns>
<asp:TemplateFieldHeaderText="文章名称"HeaderStyle-Width="540px">
<ItemTemplate>
<inputname="guid"value="<%#Eval("id")%>"type="hidden"/>
<inputname="Title<%#Eval("id")%>"value="<%#Eval("Title")%>"style="width:100%;border:1pxsolidgray"/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateFieldHeaderText="发布日期"HeaderStyle-Width="100px"ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<inputname="Date<%#Eval("id")%>"value="<%#((DateTime)Eval("CreateDate")).ToString("yyyy-MM-dd")%>"style="border:1pxsolidgray"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:ButtonID="Button1"runat="server"OnClick="Button1_Click"Text="编辑所有数据"/>
</form>
</body>
</html>
CodeFile="Default2.aspx.cs"Inherits="Default2"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headid="Head1"runat="server">
<title>利用GridView显示主细表并一次编辑明细表所有数据的例子</title>
<styletype="text/css">
td,div,a{font-size:12px}
</style>
<scripttype="text/javascript">
//<![CDATA[
functionShowHidden(sid,ev)
{
ev=ev||window.event;
vartarget=ev.target||ev.srcElement;
varoDiv=document.getElementById("div"+sid);
oDiv.style.display=oDiv.style.display=="none"?"block":"none";
target.innerHTML=oDiv.style.display=="none"?"显示":"隐藏";
}
//]]>
</script>
</head>
<body>
<formid="form1"runat="server">
<asp:GridViewID="MasterGridView"runat="server"AutoGenerateColumns="false"Width="780px"
BorderWidth="1"OnRowDataBound="MasterGridView_RowDataBound"DataKeyNames="id"
ShowHeader="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<divstyle="width:100%;padding:2px;font-weight:bold;background-color:#DEDEDE;
float:left">
<spanstyle="float:left">栏目名称:<%#Eval("Title")%></span><spanstyle="float:right;
color:Red;cursor:pointer"onclick="ShowHidden('<%#Eval("id")%>',event)">隐藏</span></div>
<divstyle="background-color:#FFF;padding-left:60px;clear:both"id="div<%#Eval("id")%>">
<asp:GridViewID="DetailGridView"runat="server"AutoGenerateColumns="false"ShowHeader="true"
HorizontalAlign="left"DataKeyNames="id"OnRowCommand="DetailGridView_RowCommand"
OnRowDeleting="DetailGridView_RowDeleting"Width="720px">
<HeaderStyleBackColor="#9999FF"/>
<Columns>
<asp:TemplateFieldHeaderText="文章名称"HeaderStyle-Width="540px">
<ItemTemplate>
<inputname="guid"value="<%#Eval("id")%>"type="hidden"/>
<inputname="Title<%#Eval("id")%>"value="<%#Eval("Title")%>"style="width:100%;border:1pxsolidgray"/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateFieldHeaderText="发布日期"HeaderStyle-Width="100px"ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<inputname="Date<%#Eval("id")%>"value="<%#((DateTime)Eval("CreateDate")).ToString("yyyy-MM-dd")%>"style="border:1pxsolidgray"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:ButtonID="Button1"runat="server"OnClick="Button1_Click"Text="编辑所有数据"/>
</form>
</body>
</html>
C#:
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Collections;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Data.OleDb;
usingSystem.Web.UI.HtmlControls;
publicpartialclassDefault2:System.Web.UI.Page
{
stringConnectionString=@"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=|DataDirectory|aspxWeb.mdb;PersistSecurityInfo=True";
OleDbConnectioncn1;
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!Page.IsPostBack)
{
OleDbConnectioncn=newOleDbConnection(ConnectionString);
cn.Open();
cn1=newOleDbConnection(ConnectionString);
cn1.Open();
OleDbCommandcmd=newOleDbCommand("select*from[Subject]",cn);
OleDbDataReaderdr=cmd.ExecuteReader(CommandBehavior.CloseConnection);
MasterGridView.DataSource=dr;
MasterGridView.DataBind();
dr.Close();
cmd.Dispose();
cn.Dispose();
cn1.Dispose();
cn=cn1=null;
}
}
protectedvoidMasterGridView_RowDataBound(objectsender,GridViewRowEventArgse)
{
if(e.Row.RowType==DataControlRowType.DataRow)
{
GridViewoGridView=(GridView)e.Row.FindControl("DetailGridView");
if(oGridView!=null)
{
OleDbCommandcmd=newOleDbCommand("selecttop10*fromDocumentWherepid="+MasterGridView.DataKeys[e.Row.RowIndex].Value,cn1);
OleDbDataReaderdr1=cmd.ExecuteReader();
oGridView.DataSource=dr1;
oGridView.DataBind();
dr1.Close();
cmd.Dispose();
}
}
}
protectedvoidDetailGridView_RowDeleting(objectsender,GridViewDeleteEventArgse)
{
GridViewa=(GridView)sender;
Response.Write("您要删除的记录是:<fontcolor='red'>"+a.DataKeys[e.RowIndex].Value.ToString()+"</font> TODO:执行删除动作");
//TODO:执行删除动作
}
protectedvoidDetailGridView_RowCommand(objectsender,GridViewCommandEventArgse)
{
}
protectedvoidButton1_Click(objectsender,EventArgse)
{
stringGuids=Request.Form["guid"];
if(Guids==null||Guids.Equals(string.Empty))
{
Response.Write("没有数据可以修改。");
return;
}
stringsql;
OleDbCommandcmd;
OleDbConnectioncn=newOleDbConnection();
cn.ConnectionString=ConnectionString;
cn.Open();
string[]ArrGuid=Guids.Split(',');
for(inti=0;i<ArrGuid.Length;i++)
{
sql="UPDATEDocumentSetTitle=@Title,CreateDate=@CreateDateWhereid=@id";
cmd=newOleDbCommand(sql,cn);
cmd.Parameters.AddWithValue("@Title",Request.Form["Title"+ArrGuid[i].Trim()]);
cmd.Parameters.AddWithValue("@CreateDate",Request.Form["Date"+ArrGuid[i].Trim()]);
cmd.Parameters.AddWithValue("@id",ArrGuid[i].Trim());
cmd.ExecuteNonQuery();
Response.Write("<li>更新:id="+ArrGuid[i]+""+Request.Form["Title"+ArrGuid[i].Trim()]);
}
cn.Close();
cn.Dispose();
}
}
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Collections;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Data.OleDb;
usingSystem.Web.UI.HtmlControls;
publicpartialclassDefault2:System.Web.UI.Page
{
stringConnectionString=@"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=|DataDirectory|aspxWeb.mdb;PersistSecurityInfo=True";
OleDbConnectioncn1;
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!Page.IsPostBack)
{
OleDbConnectioncn=newOleDbConnection(ConnectionString);
cn.Open();
cn1=newOleDbConnection(ConnectionString);
cn1.Open();
OleDbCommandcmd=newOleDbCommand("select*from[Subject]",cn);
OleDbDataReaderdr=cmd.ExecuteReader(CommandBehavior.CloseConnection);
MasterGridView.DataSource=dr;
MasterGridView.DataBind();
dr.Close();
cmd.Dispose();
cn.Dispose();
cn1.Dispose();
cn=cn1=null;
}
}
protectedvoidMasterGridView_RowDataBound(objectsender,GridViewRowEventArgse)
{
if(e.Row.RowType==DataControlRowType.DataRow)
{
GridViewoGridView=(GridView)e.Row.FindControl("DetailGridView");
if(oGridView!=null)
{
OleDbCommandcmd=newOleDbCommand("selecttop10*fromDocumentWherepid="+MasterGridView.DataKeys[e.Row.RowIndex].Value,cn1);
OleDbDataReaderdr1=cmd.ExecuteReader();
oGridView.DataSource=dr1;
oGridView.DataBind();
dr1.Close();
cmd.Dispose();
}
}
}
protectedvoidDetailGridView_RowDeleting(objectsender,GridViewDeleteEventArgse)
{
GridViewa=(GridView)sender;
Response.Write("您要删除的记录是:<fontcolor='red'>"+a.DataKeys[e.RowIndex].Value.ToString()+"</font> TODO:执行删除动作");
//TODO:执行删除动作
}
protectedvoidDetailGridView_RowCommand(objectsender,GridViewCommandEventArgse)
{
}
protectedvoidButton1_Click(objectsender,EventArgse)
{
stringGuids=Request.Form["guid"];
if(Guids==null||Guids.Equals(string.Empty))
{
Response.Write("没有数据可以修改。");
return;
}
stringsql;
OleDbCommandcmd;
OleDbConnectioncn=newOleDbConnection();
cn.ConnectionString=ConnectionString;
cn.Open();
string[]ArrGuid=Guids.Split(',');
for(inti=0;i<ArrGuid.Length;i++)
{
sql="UPDATEDocumentSetTitle=@Title,CreateDate=@CreateDateWhereid=@id";
cmd=newOleDbCommand(sql,cn);
cmd.Parameters.AddWithValue("@Title",Request.Form["Title"+ArrGuid[i].Trim()]);
cmd.Parameters.AddWithValue("@CreateDate",Request.Form["Date"+ArrGuid[i].Trim()]);
cmd.Parameters.AddWithValue("@id",ArrGuid[i].Trim());
cmd.ExecuteNonQuery();
Response.Write("<li>更新:id="+ArrGuid[i]+""+Request.Form["Title"+ArrGuid[i].Trim()]);
}
cn.Close();
cn.Dispose();
}
}