有網友在論壇上詢問:如何在使用GridView顯示主細表時添加刪除功能?其實,如果單個GridView能夠實現刪除對話,N個GridView嵌套也沒有任何問題。下面就將例子粘貼如下,望各位需要的朋友仔細揣摩一下,道理很簡單的:)
查看例子
aspx?:
<%
@?Page?Language
=
"
C#
"
?AutoEventWireup
=
"
true
"
?CodeFile
=
"
Default2.aspx.cs
"
?Inherits
=
"
Default2
"
?
%>
<!
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?
id
="Head1"
?runat
="server"
>
??
<
title
>
利用GridView顯示主細表并添加打開、關閉功能
</
title
>
??
<
style?
type
="text/css"
>
??td,div,a?
{
font-size
:
12px
}
??
</
style
>
??
<
script?
type
="text/javascript"
>
??
//
<![CDATA[
??
function
?ShowHidden(sid,ev)
??{
????ev?
=
?ev?
||
?window.event;
????
var
?target?
=
?ev.target?
||
?ev.srcElement;
????
var
?oDiv?
=
?document.getElementById(
"
div
"
?
+
?sid);
????oDiv.style.display?
=
?oDiv.style.display?
==
?
"
none
"
?
"
block
"
:
"
none
"
;
????target.innerHTML?
=
?oDiv.style.display?
==
?
"
none
"
?
"
顯示
"
:
"
隱藏
"
;
??}
??
//
]]>
??
</
script
>
</
head
>
<
body
>
??
<
form?
id
="form1"
?runat
="server"
>
????
<
asp:GridView?
ID
="MasterGridView"
?runat
="server"
?AutoGenerateColumns
="false"
?Width
="780px"
??????BorderWidth
="1"
?OnRowDataBound
="MasterGridView_RowDataBound"
?DataKeyNames
="id"
??????ShowHeader
="false"
>
??????
<
Columns
>
????????
<
asp:TemplateField
>
??????????
<
ItemTemplate
>
????????????
<
div?
style
="width:?100%;?padding:?2px;?font-weight:?bold;?background-color:?#DEDEDE;
??????????????float:?left"
>
??????????????
<
span?
style
="float:?left"
>
欄目名稱:
<%
#
Eval
(
"
Title
"
)?
%>
</
span
><
span?
style
="float:?right;
????????????????color:?Red;?cursor:?pointer"
?onclick
="ShowHidden('<%#Eval("
id")?%
>
',event)">隱藏
</
span
></
div
>
????????????
<
div?
style
="background-color:?#FFF;?padding-left:?60px;?clear:?both"
?id
="div<%#Eval("
id")?%
>
">
??????????????
<
asp:GridView?
ID
="DetailGridView"
?runat
="server"
?AutoGenerateColumns
="false"
?ShowHeader
="true"
????????????????HorizontalAlign
="left"
?DataKeyNames
="id"
?AutoGenerateDeleteButton
="true"
?OnRowCommand
="DetailGridView_RowCommand"
????????????????OnRowDeleting
="DetailGridView_RowDeleting"
?Width
="720px"
>
????????????????
<
HeaderStyle?
BackColor
="#9999FF"
?
/>
????????????????
<
Columns
>
??????????????????
<
asp:TemplateField?
HeaderText
="文章名稱"
?HeaderStyle-Width
="540px"
>
????????????????????
<
ItemTemplate
>
??????????????????????
<
a?
href
="/article/<%#Eval("
objectGuid")?%
>
/read.aspx">
????????????????????????
<%
#
Eval
(
"
Title
"
)?
%>
??????????????????????
</
a
>
[
<%
#?
Eval
(
"
HitCount
"
)?
%>
]
????????????????????
</
ItemTemplate
>
??????????????????
</
asp:TemplateField
>
??????????????????
<
asp:BoundField?
HeaderText
="發布日期"
?DataField
="CreateDate"
?HtmlEncode
="false"
?DataFormatString
="{0:yyyy年MM月dd日}"
????????????????????HeaderStyle-Width
="100px"
?ItemStyle-HorizontalAlign
="Center"
?
/>
??????????????????
<
asp:CommandField?
DeleteText
="刪除"
?ShowDeleteButton
="true"
?ButtonType
="Button"
?HeaderStyle-Width
="40px"
?
/>
????????????????
</
Columns
>
??????????????
</
asp:GridView
>
????????????
</
div
>
??????????
</
ItemTemplate
>
????????
</
asp:TemplateField
>
??????
</
Columns
>
????
</
asp:GridView
>
??
</
form
>
</
body
>
</
html
>
?
C#:
using
?System;
using
?System.Data;
using
?System.Configuration;
using
?System.Collections;
using
?System.Web;
using
?System.Web.Security;
using
?System.Web.UI;
using
?System.Web.UI.WebControls;
using
?System.Data.OleDb;
using
?System.Web.UI.HtmlControls;
public
?
partial
?
class
?Default2?:?System.Web.UI.Page
{
??
string
?ConnectionString?
=
?
@"
Provider=Microsoft.Jet.OLEDB.4.0;Data?Source=|DataDirectory|aspxWeb.mdb;Persist?Security?Info=True
"
;
??OleDbConnection?cn1;
??
protected
?
void
?Page_Load(?
object
?sender,?EventArgs?e?)
??{
????
if
?(
!
Page.IsPostBack)
????{
??????OleDbConnection?cn?
=
?
new
?OleDbConnection(ConnectionString);
??????cn.Open();
??????cn1?
=
?
new
?OleDbConnection(ConnectionString);
??????cn1.Open();
??????OleDbCommand?cmd?
=
?
new
?OleDbCommand(
"
select?*?from?[Subject]
"
,?cn);
??????OleDbDataReader?dr?
=
?cmd.ExecuteReader(CommandBehavior.CloseConnection);
??????MasterGridView.DataSource?
=
?dr;
??????MasterGridView.DataBind();
??????dr.Close();
??????cmd.Dispose();
??????cn.Dispose();
??????cn1.Dispose();
??????cn?
=
?cn1?
=
?
null
;
????}
??}
??
protected
?
void
?MasterGridView_RowDataBound(?
object
?sender,?GridViewRowEventArgs?e?)
??{
????
if
?(e.Row.RowType?
==
?DataControlRowType.DataRow)
????{
??????GridView?oGridView?
=
?(GridView)e.Row.FindControl(
"
DetailGridView
"
);
??????
if
?(oGridView?
!=
?
null
)
??????{
????????OleDbCommand?cmd?
=
?
new
?OleDbCommand(
"
select?top?10?*?from?Document?Where?pid?=?
"
?
+
?MasterGridView.DataKeys[e.Row.RowIndex].Value,?cn1);
????????OleDbDataReader?dr1?
=
?cmd.ExecuteReader();
????????oGridView.DataSource?
=
?dr1;
????????oGridView.DataBind();
????????dr1.Close();
????????cmd.Dispose();
??????}
????}
??}
??
protected
?
void
?DetailGridView_RowDeleting(?
object
?sender,?GridViewDeleteEventArgs?e?)
??{
????GridView?a?
=
?(GridView)sender;
????Response.Write(
"
您要刪除的記錄是:<font?color='red'>
"
?
+
?a.DataKeys[e.RowIndex].Value.ToString()?
+
?
"
</font> TODO:執行刪除動作
"
);
????
//
?TODO:執行刪除動作
??}
??
protected
?
void
?DetailGridView_RowCommand(?
object
?sender,?GridViewCommandEventArgs?e?)
??{
??}
}
注意:EnableViewState="true" 是必須的。