以下程序可以快速添加數據入數據庫中: <%@ Page Language="vb" Debug="true" ValidateRequest="false"%> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.OleDb" %> <html> <script language="VB" runat="server"> Dim strConn as String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(".\\kk.mdb") + ";" Dim myConnection as New OleDbConnection (strConn) Sub Page_Load(Src As Object, E As EventArgs) If Not (IsPostBack) BindGrid() End If End Sub Sub BindGrid() Dim DS As DataSet Dim MyCommand As OleDbDataAdapter MyCommand = new OleDbDataAdapter("SELECT TOP 5 * FROM [board] ORDER BY boardid DESC", MyConnection) DS = new DataSet() MyCommand.Fill(DS, "table1") MyDataGrid.DataSource=DS.Tables("table1").DefaultView MyDataGrid.DataBind() End Sub
Public Sub MyDataGrid_Cancel(sender As Object, e As DataGridCommandEventArgs) MyDataGrid.ShowFooter = True MyDataGrid.EditItemIndex = -1 BindGrid() End Sub Sub MyDataGrid_Edit(Sender As Object, E As DataGridCommandEventArgs) MyDataGrid.ShowFooter = False MyDataGrid.EditItemIndex = CInt(E.Item.ItemIndex) BindGrid() End Sub Public Sub MyDataGrid_Update(sender As Object, e As DataGridCommandEventArgs) Dim ID As String = CType(e.Item.FindControl("lblID"), Label).Text Dim BoardType As String = CType(e.Item.FindControl("txtBoardType"), TextBox).Text Dim ReadMe As String = CType(e.Item.FindControl("txtReadMe"), TextBox).Text Response.write (ID & "<BR>" & BoardType & "<BR>" & ReadMe) UpdateRecord(id,boardtype,readme) 'Call Sub MyDataGrid.ShowFooter = True MyDataGrid.EditItemIndex = -1 BindGrid() End Sub Public Sub MyDataGrid_Delete(sender As Object, e As DataGridCommandEventArgs) dim i as String = CType(e.Item.FindControl("lblID"), Label).Text Response.write (i) DeleteRecord(i) 'Call Sub MyDataGrid.EditItemIndex = -1 BindGrid() End SubSub doInsert(sender As Object, e As DataGridCommandEventArgs) If e.CommandName = "Insert" Then Dim addBoardType As String = CType(e.Item.FindControl("add_BoardType"), TextBox).Text Dim addReadMe As String = CType(e.Item.FindControl("add_ReadMe"), TextBox).Text '---------------------------- dim lblCheckBoardType as Label lblCheckBoardType = CType(e.Item.FindControl("CheckBoardType"),Label) dim lblCheckReadMe as Label lblCheckReadMe = CType(e.Item.FindControl("CheckReadMe"),Label) if addBoardType = "" and addReadMe = "" then lblCheckBoardType.Visible = "true" lblCheckReadMe.Visible = "true" else if addBoardType <> "" then if addReadMe <> "" then Response.write (addBoardType & "<BR>" &addReadMe) AddRecord(addBoardType,addReadMe) 'Call Sub BindGrid() else lblCheckReadMe.Visible = "true" end if else lblCheckBoardType.Visible = "true" end if end if End If End Sub Sub AddRecord(newBoardType,newReadMe) Dim MyCommandAdd As OleDbCommand Dim InsertCmd As String = "INSERT INTO board (boardtype,readme) values (@boardtype,@readme)" MyCommandAdd = New OleDbCommand(InsertCmd, myConnection) MyCommandAdd.parameters.add("@boardtype",Format(newBoardType)) MyCommandAdd.parameters.add("@readme",Format(newReadMe)) MyCommandAdd.Connection.Open() MyCommandAdd.ExecuteNonQuery() MyCommandAdd.Connection.Close() End Sub Sub DeleteRecord(DelRecord) Dim MyCommandDel As OleDbCommand Dim InsertCmd As String = "DELETE FROM board WHERE boardid = @Id" MyCommandDel = New OleDbCommand(InsertCmd, myConnection) MyCommandDel.parameters.add("@id",DelRecord) MyCommandDel.Connection.Open() MyCommandDel.ExecuteNonQuery() MyCommandDel.Connection.Close() End Sub Sub UpdateRecord(newID,newBoardType,newReadMe) Dim MyCommandDel As OleDbCommand Dim InsertCmd As String = "UPDATE board SET boardtype=@boardtye,readme=@readme WHERE boardid =" & newID MyCommandDel = New OleDbCommand(InsertCmd, myConnection) MyCommandDel.parameters.add("@boardtype",Format(newBoardType)) MyCommandDel.parameters.add("@readme",Format(NewReadme)) MyCommandDel.Connection.Open() MyCommandDel.ExecuteNonQuery() MyCommandDel.Connection.Close() End Sub Function UFormat(formatdata) formatdata=replace(formatdata,"&","&") 'formatdata=replace(formatdata,"''","'") formatdata=replace(formatdata,"<","<") formatdata=replace(formatdata,">",">") formatdata=replace(formatdata,"<","chr(60)") formatdata=replace(formatdata,">","chr(37)") formatdata=replace(formatdata,""","""") 'formatdata=replace(formatdata,";;",";") formatdata=replace(formatdata,"<br>" & chr(13)+chr(10),chr(13)) Uformat=replace(formatdata," ",chr(32)) End Function </script>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:EditCommandColumn>
参考
http://dotnet.aspx.cc/ShowDetail.aspx?id=8ADE535F-AD40-4DE3-A962-A64B4FAF12C4
<asp:EditCommandColumn HeaderText="修改" EditText="修改" CancelText="取消" UpdateText="更新" HeaderStyle-HorizontalAlign=Center ItemStyle-HorizontalAlign=Center ItemStyle-Wrap=False></asp:EditCommandColumn>后台分别处理三个按钮的事件
public void DG1_Edit(Object sender, DataGridCommandEventArgs e)
{
DG1.EditItemIndex = (int)e.Item.ItemIndex;
BindGrid();
}
public void DG1_Cancle(object sender, DataGridCommandEventArgs e)
{
DG1.EditItemIndex = -1;
BindGrid();
}
public void DG1_Update(object sender, DataGridCommandEventArgs e)
{
//写提交后的处理
}
<%@ Page Language="vb" Debug="true" ValidateRequest="false"%>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<html>
<script language="VB" runat="server">
Dim strConn as String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(".\\kk.mdb") + ";"
Dim myConnection as New OleDbConnection (strConn) Sub Page_Load(Src As Object, E As EventArgs)
If Not (IsPostBack)
BindGrid()
End If
End Sub Sub BindGrid()
Dim DS As DataSet
Dim MyCommand As OleDbDataAdapter
MyCommand = new OleDbDataAdapter("SELECT TOP 5 * FROM [board] ORDER BY boardid DESC", MyConnection)
DS = new DataSet()
MyCommand.Fill(DS, "table1")
MyDataGrid.DataSource=DS.Tables("table1").DefaultView
MyDataGrid.DataBind()
End Sub
Public Sub MyDataGrid_Cancel(sender As Object, e As DataGridCommandEventArgs)
MyDataGrid.ShowFooter = True
MyDataGrid.EditItemIndex = -1
BindGrid()
End Sub Sub MyDataGrid_Edit(Sender As Object, E As DataGridCommandEventArgs)
MyDataGrid.ShowFooter = False
MyDataGrid.EditItemIndex = CInt(E.Item.ItemIndex)
BindGrid()
End Sub Public Sub MyDataGrid_Update(sender As Object, e As DataGridCommandEventArgs)
Dim ID As String = CType(e.Item.FindControl("lblID"), Label).Text
Dim BoardType As String = CType(e.Item.FindControl("txtBoardType"), TextBox).Text
Dim ReadMe As String = CType(e.Item.FindControl("txtReadMe"), TextBox).Text
Response.write (ID & "<BR>" & BoardType & "<BR>" & ReadMe)
UpdateRecord(id,boardtype,readme) 'Call Sub
MyDataGrid.ShowFooter = True
MyDataGrid.EditItemIndex = -1
BindGrid()
End Sub Public Sub MyDataGrid_Delete(sender As Object, e As DataGridCommandEventArgs)
dim i as String = CType(e.Item.FindControl("lblID"), Label).Text
Response.write (i)
DeleteRecord(i) 'Call Sub
MyDataGrid.EditItemIndex = -1
BindGrid()
End SubSub doInsert(sender As Object, e As DataGridCommandEventArgs)
If e.CommandName = "Insert" Then
Dim addBoardType As String = CType(e.Item.FindControl("add_BoardType"), TextBox).Text
Dim addReadMe As String = CType(e.Item.FindControl("add_ReadMe"), TextBox).Text
'----------------------------
dim lblCheckBoardType as Label
lblCheckBoardType = CType(e.Item.FindControl("CheckBoardType"),Label)
dim lblCheckReadMe as Label
lblCheckReadMe = CType(e.Item.FindControl("CheckReadMe"),Label) if addBoardType = "" and addReadMe = "" then
lblCheckBoardType.Visible = "true"
lblCheckReadMe.Visible = "true"
else
if addBoardType <> "" then
if addReadMe <> "" then
Response.write (addBoardType & "<BR>" &addReadMe)
AddRecord(addBoardType,addReadMe) 'Call Sub
BindGrid()
else
lblCheckReadMe.Visible = "true"
end if
else
lblCheckBoardType.Visible = "true"
end if
end if
End If
End Sub Sub AddRecord(newBoardType,newReadMe)
Dim MyCommandAdd As OleDbCommand
Dim InsertCmd As String = "INSERT INTO board (boardtype,readme) values (@boardtype,@readme)"
MyCommandAdd = New OleDbCommand(InsertCmd, myConnection)
MyCommandAdd.parameters.add("@boardtype",Format(newBoardType))
MyCommandAdd.parameters.add("@readme",Format(newReadMe))
MyCommandAdd.Connection.Open()
MyCommandAdd.ExecuteNonQuery()
MyCommandAdd.Connection.Close()
End Sub Sub DeleteRecord(DelRecord)
Dim MyCommandDel As OleDbCommand
Dim InsertCmd As String = "DELETE FROM board WHERE boardid = @Id"
MyCommandDel = New OleDbCommand(InsertCmd, myConnection)
MyCommandDel.parameters.add("@id",DelRecord)
MyCommandDel.Connection.Open()
MyCommandDel.ExecuteNonQuery()
MyCommandDel.Connection.Close()
End Sub Sub UpdateRecord(newID,newBoardType,newReadMe)
Dim MyCommandDel As OleDbCommand
Dim InsertCmd As String = "UPDATE board SET boardtype=@boardtye,readme=@readme WHERE boardid =" & newID
MyCommandDel = New OleDbCommand(InsertCmd, myConnection)
MyCommandDel.parameters.add("@boardtype",Format(newBoardType))
MyCommandDel.parameters.add("@readme",Format(NewReadme))
MyCommandDel.Connection.Open()
MyCommandDel.ExecuteNonQuery()
MyCommandDel.Connection.Close()
End Sub Function UFormat(formatdata)
formatdata=replace(formatdata,"&","&")
'formatdata=replace(formatdata,"''","'")
formatdata=replace(formatdata,"<","<")
formatdata=replace(formatdata,">",">")
formatdata=replace(formatdata,"<","chr(60)")
formatdata=replace(formatdata,">","chr(37)")
formatdata=replace(formatdata,""","""")
'formatdata=replace(formatdata,";;",";")
formatdata=replace(formatdata,"<br>" & chr(13)+chr(10),chr(13))
Uformat=replace(formatdata," ",chr(32))
End Function
</script>
<form runat="server" ID="editDataGrid">
<ASP:DataGrid id="MyDataGrid" runat="server"
Width="200"
BackColor="#ffffff"
BorderColor="black"
CellPadding=3
CellSpacing="0"
HeaderStyle-BackColor=#ff0000
HeaderStyle-Font-Name="arial"
HeaderStyle-Font-Bold=True
HeaderStyle-Font-Size="11"
HeaderStyle-ForeColor=#ffffff
AlternatingItemStyle-BackColor=#ffffcc
ItemStyle-Font-Name="arial"
ItemStyle-Font-Size="10"
OnCancelCommand="MyDataGrid_Cancel"
OnUpdateCommand="MyDataGrid_Update"
OnDeleteCommand="MyDataGrid_Delete"
OnEditCommand="MyDataGrid_Edit"
AutoGenerateColumns="false"
ShowFooter="True"
OnItemCommand="doInsert">
<Columns>
<asp:TemplateColumn HeaderText="BoardID" ItemStyle-Width="30px">
<ItemTemplate>
<asp:Label ID="lblID" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "boardid") %>' />
</ItemTemplate>
</asp:TemplateColumn> <asp:TemplateColumn HeaderText="BoardType">
<FooterTemplate>
<asp:TextBox ID="add_BoardType" Columns="20" Runat="Server" TextMode="MultiLine" Rows="3"/>
<asp:Label ID="CheckBoardType" Runat="Server" Text="Enter Something" Font-Name="arial" Font-Size="12" ForeColor="#CC0000" Visible="false"/>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="lblBoardType" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "boardtype") %>' />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="txtBoardType" Text='<%# Uformat(DataBinder.Eval(Container.DataItem, "boardtype")) %>' TextMode="MultiLine" Rows="3"/>
<asp:RequiredFieldValidator id="reqval_BoardType" Text="Can't Null" ControlToValidate="txtBoardType" Display="Dynamic" Font-Name="arial" Font-Size="12" runat=server/>
</EditItemTemplate>
</asp:TemplateColumn> <asp:TemplateColumn HeaderText="ReadMe">
<FooterTemplate>
<asp:TextBox ID="add_ReadMe" Columns="20" Runat="Server" TextMode="MultiLine" Rows="3"/>
<asp:Label ID="CheckReadMe" Runat="Server" Text="Enter Something" Font-Name="arial" Font-Size="12" ForeColor="#CC0000" Visible="false"/>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="lblReadMe" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "ReadMe") %>' />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="txtReadMe" Text='<%# UFormat(DataBinder.Eval(Container.DataItem, "ReadMe")) %>' TextMode="MultiLine" Rows="3"/>
<asp:RequiredFieldValidator id="reqval_ReadMe" Text="Can't Null" ControlToValidate="txtReadMe" Display="Dynamic" Font-Name="arial" Font-Size="12" runat=server/>
</EditItemTemplate>
</asp:TemplateColumn> <asp:EditCommandColumn
ButtonType="PushButton" UpdateText="Update" CancelText="Cancel"
EditText="Edit" HeaderText="Edit">
</asp:EditCommandColumn> <asp:TemplateColumn HeaderText="Delete">
<ItemTemplate>
<asp:Button CommandName="Delete" Text="Delete" ID="btnDel" Runat="server" />
</ItemTemplate>
<FooterTemplate>
<asp:Button CommandName="Insert" Text="Add" ID="btnAdd" Runat="server"/>
</FooterTemplate>
</asp:TemplateColumn>
</Columns>
</ASP:DataGrid>
</form>
</body>
</html>
例如
编辑事件
public void DataGrid1_EditItemCommand(Object sender, DataGridCommandEventArgs e)
{
DG1.EditItemIndex = (int)e.Item.ItemIndex;
BindGrid();
}
取消事件
public void DataGrid_CancleCommand(object sender, DataGridCommandEventArgs e)
{
DG1.EditItemIndex = -1;
BindGrid();
}
更新事件
public void DG1_UpdateCommand(object sender, DataGridCommandEventArgs e)
{
//写提交后的处理
}
http://aspnet.4guysfromrolla.com/articles/021203-1.aspx
ds.Tables[0].AcceptChanges(); //为列表追加一新行
DataRow row= ds.Tables[0].NewRow() ;
row["fld_roleid"] = "";
row["fld_rolename"] = "";
row["fld_description"] = "";
ds.Tables[0].Rows.Add(row);