打算在 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>
<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
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