【IT168技术文档】
打算在 Footer 的各列中输入字段的信息,最后一列是一个保存按钮。输入信息的列可以用 TemplateColumn 列来实现, EditCommandColumn 列的 Footer 中添加一个 ImageButton ,点击后保存信息。
一、静态方式添加
<asp:TemplateColumn> 有一个子标签 <FooterTemplate>,可以再此加入 TextBox 控件,并且 DataGrid 的 ShowFooter 属性显示设置为 true, 其默认值为 false 。
二、动态方式添加保存按钮 ImageButton<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>
动态生成控件较静态方式灵活,它不要求列是 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