打算在 Footer 的各列中输入字段的信息,最后一列是一个保存按钮。输入信息的列可以用 TemplateColumn 列来实现, EditCommandColumn 列的 Footer 中添加一个 ImageButton ,点击后保存信息。
一、静态方式添加
<asp:TemplateColumn>有一个子标签 <FooterTemplate>,可以再此加入 TextBox 控件,并且 DataGrid 的 ShowFooter 属性显示设置为 true, 其默认值为 false 。
<
asp:TemplateColumn
SortExpression
="dm"
HeaderText
="代码"
>
<
ItemTemplate
>
<%
# DataBinder.Eval(Container,
"
DataItem.dm
"
)
%>
</
asp:Label
>
</
ItemTemplate
>
<
FooterTemplate
>
<
asp:TextBox
id
="txtDmAdd"
runat
="server"
Width
="70px"
></
asp:TextBox
>
</
FooterTemplate
>
<
EditItemTemplate
>
<%
# DataBinder.Eval(Container,
"
DataItem.dm
"
)
%>
</
EditItemTemplate
>
</
asp:TemplateColumn
>
<
asp:TemplateColumn
SortExpression
="mc"
HeaderText
="名称"
>
<
ItemTemplate
>
<%
# DataBinder.Eval(Container.DataItem,
"
mc
"
)
%>
</
ItemTemplate
>
<
FooterTemplate
>
<
asp:TextBox
id
="txtMcAdd"
runat
="server"
></
asp:TextBox
>
</
FooterTemplate
>
<
EditItemTemplate
>
<
asp:TextBox
id
=txtMc
runat
="server"
Text
='<%#
DataBinder.Eval(Container.DataItem,"mc")%
>
'>
</
asp:TextBox
>
</
EditItemTemplate
>
</
asp:TemplateColumn
>
<
asp:EditCommandColumn
ButtonType
="LinkButton"
HeaderText
="编辑"
EditText
="编辑"
UpdateText
="保存"
CancelText
="取消"
>
</
asp:EditCommandColumn
>
二、动态方式添加保存按钮 ImageButton
动态生成控件较静态方式灵活,它不要求列是 TemplateColumn ,只要找到 DataGrid 中的单元格,就可以在这个单元格的 Controls 集合中添加一个动态生成的控件就可以了。
Private
Sub
dgdData_ItemCreated(
ByVal
sender
As
Object
,
ByVal
e
As
System.Web.UI.WebControls.DataGridItemEventArgs)
Handles
dgdData.ItemCreated
Select
Case
e.Item.ItemType
Case
ListItemType.Footer
Dim
SaveAddButton
As
ImageButton
SaveAddButton
=
New
ImageButton
With
SaveAddButton
.ID
=
"
btnSaveAdd
"
.ImageUrl
=
"
\iOffice\img\save.gif
"
.ImageAlign
=
ImageAlign.Middle
.Visible
=
True
End
With
e.Item.Cells(
2
).Controls.Add(SaveAddButton)
AddHandler
SaveAddButton.Click,
AddressOf
SaveAddButton_Click
'
动态邦定事件方法
Case
Else
End
Select
End Sub
Private
Sub
SaveAddButton_Click(
ByVal
sender
As
System.Object,
ByVal
e
As
System.web.UI.ImageClickEventArgs)
Dim
txtDmAdd
As
TextBox
Dim
txtMcAdd
As
TextBox
Dim
arrValue(
2
)
As
String
txtDmAdd
=
sender.parent.parent.findcontrol(
"
txtDmAdd
"
)
txtMcAdd
=
sender.parent.parent.findcontrol(
"
txtMcAdd
"
)
arrValue(
0
)
=
DbConfig.SafeSql(
Trim
(txtDmAdd.Text))
arrValue(
1
)
=
DbConfig.SafeSql(
Trim
(txtMcAdd.Text))
library.CodeAdd(arrValue)
'
library.CodeAdd 调用添加记录的存储过程
End Sub