如何用取得的在表中的顺序值进行操作,表没有ID表。 主要是那更新的代码如何写。<%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.sqlclient"%> <html> <script language="VB" runat="server"> Dim CartView As DataView Dim runningTotal As Double = 0 'Cart 是 Page 上的一个属性 'ReadOnly Property Cart As DataTable ' Get ' Dim tmpCart As DataTable ' Dim i As Integer ' Dim dr As DataRow ' ' If Session("DG_ShoppingCart") Is Nothing Then ' tmpCart = new DataTable() ' tmpCart.Columns.Add(new DataColumn("数量", GetType(String))) ' tmpCart.Columns.Add(new DataColumn("产品", GetType(String))) ' tmpCart.Columns.Add(new DataColumn("价格", GetType(Double))) ' tmpCart.Columns.Add(new DataColumn("礼品包", GetType(Boolean))) ' Session("DG_ShoppingCart") = tmpCart ' 第一次加载 -- 预填充一些数据 ' For i= 1 to 6 ' dr = tmpCart.NewRow() ' dr(0) = "1" ' dr(1) = "产品" & i.ToString ' dr(2) = 1.23 * (i+1) ' dr(3) = false ' tmpCart.Rows.Add(dr) ' Next ' Return tmpCart ' Else ' Return Session("DG_ShoppingCart") ' End If 'End Get 'End Property 'Sub Page_Init(sender As Object, e As EventArgs) ' MyDataGrid.EnableViewState = true 'End Sub Sub Page_Load(sender As Object, e As EventArgs) 'CartView = Cart.DefaultView If Not IsPostBack Then BindGrid End If End Sub 'Sub BindGrid() ' MyDataGrid.DataSource = CartView ' MyDataGrid.DataBind() ' End Sub
Sub BindGrid() Dim objconnection1 As SqlConnection '定义连接 Dim strConnection1 As String = "user id=sa;password=1979;database=Northwind;server=192.168.0.253;connect Timeout=30" objconnection1 = New SqlConnection(strConnection1) '引用 Dim strsql As String = "select * from customers" Dim objDataSet As New DataSet() Dim objadapter As New SqlDataAdapter(strsql, objconnection1) objadapter.Fill(objDataSet, "testtable") Dim objtable As DataTable objtable = objDataSet.Tables("testtable") Dim objDataView As New DataView(objDataSet.Tables("testtable"))
MyDataGrid.DataSource = objDataView MyDataGrid.DataBind() 'objDataSet.close objconnection1.close End Sub Sub btnUpdate_click(sender As Object, e As EventArgs) Dim i As Integer Dim _item As DataGridItem Dim dr As DataRow For i = 0 To MyDataGrid.Items.Count - 1 _item = MyDataGrid.Items(i) Dim qtyTextBox As TextBox= _item.FindControl("txtQty") Dim giftCheckBox As CheckBox = _item.FindControl("chkGIft") 'response.write (qtyTextBox.Text &"<br>") Dim objconnection2 As SqlConnection '定义连接 Dim strConnection2 As String = "user id=sa;password=1979;database=Northwind;server=192.168.0.253;connect Timeout=30" objconnection2 = New SqlConnection(strConnection2) '引用
if giftCheckBox.Checked=True then objconnection2.open() Dim strsql="update customers set testint='"&qtyTextBox.Text &"' " response.write (strsql) response.end end if ' 对于数据库,我们应使用一条更新命令。 ' 因为这是一个内存内数据表,所以我们只更改内存内的行。 ' dr = Cart.Rows(i) ' dr(0) = qtyTextBox.Text ' dr(3) = giftCheckBox.Checked Next BindGrid End Sub ' Function CalcTotal (count As Integer, price As Double) As Double ' Dim total As Double ' ' total = count * price ' runningTotal += total ' ' CalcTotal = total ' End Function </script> <body> <h3><font face="宋体">DataGrid 的自定义编辑</font></h3> <form runat="server" ID="Form1"> <ASP:DataGrid id="MyDataGrid" runat="server" BorderColor="black" BorderWidth="1" GridLines="none" CellPadding="4" Font-Name="宋体" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd" AutoGenerateColumns="false"> <Columns> <asp:TemplateColumn HeaderText="companyname"> <ItemTemplate> <asp:TextBox id=txtQty runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "testint") %>' Width="40px" /> </ItemTemplate> </asp:TemplateColumn> <asp:BoundColumn HeaderText="companyname" DataField="companyname" /> <asp:BoundColumn HeaderText="companyname" DataField="companyname" DataFormatString="{0:c}" /> <asp:TemplateColumn HeaderText="testint"> <ItemTemplate> <center> <asp:CheckBox id="chkGIft" runat="server" /> </center> </ItemTemplate> </asp:TemplateColumn> </Columns> </ASP:DataGrid> <asp:LinkButton id="btnUpdate" runat="server" Text="更新合计" Font-Name="Verdana" Font-Size="9pt" onClick="btnUpdate_click" /> </form> </body>
找到一个例子,关于问题二。表里面没有ID一样可以处理的。例子是使用sql2000自带的数据库,你可以自己演示。<%@ import namespace="System.Data" %> <%@ import namespace="System.Data.SqlClient" %> <script language="vb" runat="server"> private sSqlCon as string = "server=localhost;uid=sa;pwd=;database=northwind" public sub Page_Load(sender as Object, e as EventArgs) if not IsPostBack then Bind() end if end subprivate sub Bind() dim SqlCon as new SqlConnection(sSqlCon) dim SqlCmd as new StringBuilder() SqlCmd.Append("SELECT ProductName,UnitPrice,") SqlCmd.Append("UnitsInStock,UnitsOnOrder,") SqlCmd.Append("ProductID FROM Products") dim sda as new SqlDataAdapter(SqlCmd.ToString(),SqlCon) dim ds as new DataSet() sda.Fill(ds,"products") DGProducts.DataSource = ds.Tables("Products").DefaultView DGProducts.DataBind()end subpublic sub DGProducts_Edit(sender as Object, e as DataGridCommandEventArgs) DGProducts.EditItemIndex = e.Item.ItemIndex Bind()end subpublic sub DGProducts_Cancel(sender as Object, e as DataGridCommandEventArgs) DGProducts.EditItemIndex = -1 Bind()end subpublic sub DGProducts_Update(sender as Object, e as DataGridCommandEventArgs) dim sProductName,sUnitsInStock,sUnitsOnOrder,sProductID as string sProductName = CType(e.Item.Cells(1).Controls(0), TextBox).Text sUnitsInStock = CType(e.Item.Cells(2).Controls(0), TextBox).Text sUnitsOnOrder = CType(e.Item.Cells(3).Controls(0), TextBox).Text sProductID = e.Item.Cells(5).Text dim sSqlCmd as new StringBuilder() sSqlCmd.Append("UPDATE Products ") sSqlCmd.Append("SET ProductName = @ProductName,") sSqlCmd.Append("UnitsInStock = @UnitsInStock,") sSqlCmd.Append("UnitsOnOrder = @UnitsOnOrder ") sSqlCmd.Append("WHERE ProductID = @ProductID") dim SqlCon as new SqlConnection(sSqlCon) Dim SqlCmd as new SqlCommand(sSqlCmd.ToString(),SqlCon) SqlCmd.Parameters.Add(new SqlParameter("@ProductName", SqlDbType.NVarChar, 40)) SqlCmd.Parameters("@ProductName").Value = sProductName SqlCmd.Parameters.Add(new SqlParameter("@UnitsInStock", SqlDbType.SmallInt)) SqlCmd.Parameters("@UnitsInStock").Value = sUnitsInStock SqlCmd.Parameters.Add(new SqlParameter("@UnitsOnOrder", SqlDbType.SmallInt)) SqlCmd.Parameters("@UnitsOnOrder").Value = sUnitsOnOrder SqlCmd.Parameters.Add(new SqlParameter("@ProductID", SqlDbType.SmallInt)) SqlCmd.Parameters("@ProductID").Value = sProductID SqlCon.Open() SqlCmd.ExecuteNonQuery() SqlCon.Close() DGProducts.EditItemIndex = -1 Bind()end sub</script> <html> <body> <head> <style rel="stylesheet"> H3 { font: bold 11pt Verdana, Arial, sans-serif; } .products { font: 9pt Verdana, Arial, sans-serif; } .productsHead { font: bold 9pt Verdana, Arial, sans-serif; background-color:Maroon; color:white; } a { text-decoration:none; } a:hover { text-decoration:underline; color:maroon; } </style> </head> <form runat="server"> <H3>Northwind Inventory Management - VisualBasic.NET</H3><asp:DataGrid id="DGProducts" runat="server" Cellpadding="4" Cellspacing="0" Width="750" BorderWidth="1" Gridlines="None" AlternatingItemStyle-BackColor="Tan" HeaderStyle-CssClass="productsHead" Font-Size="12" AutoGenerateColumns="false" OnEditCommand="DGProducts_Edit" OnCancelCommand="DGProducts_Cancel" OnUpdateCommand="DGProducts_Update" > <Columns> <asp:EditCommandColumn ButtonType="LinkButton" CancelText="Cancel" EditText="Edit" UpdateText="Update" /> <asp:BoundColumn DataField="ProductName" HeaderText="Product Name" /> <asp:BoundColumn DataField="UnitsInStock" HeaderText="Units in Stock" /> <asp:BoundColumn DataField="UnitsOnOrder" HeaderText="Units on Order" /> <asp:BoundColumn DataField="UnitPrice" HeaderText="Price Per Unit" DataFormatString="{0:C}" ReadOnly="true" /> <asp:BoundColumn DataField="ProductID" HeaderText="Product ID" ReadOnly="true" /> </columns> </asp:DataGrid> </form> </body> </html>
主要是那更新的代码如何写。<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.sqlclient"%>
<html>
<script language="VB" runat="server"> Dim CartView As DataView
Dim runningTotal As Double = 0 'Cart 是 Page 上的一个属性
'ReadOnly Property Cart As DataTable
' Get
' Dim tmpCart As DataTable
' Dim i As Integer
' Dim dr As DataRow
'
' If Session("DG_ShoppingCart") Is Nothing Then
' tmpCart = new DataTable()
' tmpCart.Columns.Add(new DataColumn("数量", GetType(String)))
' tmpCart.Columns.Add(new DataColumn("产品", GetType(String)))
' tmpCart.Columns.Add(new DataColumn("价格", GetType(Double)))
' tmpCart.Columns.Add(new DataColumn("礼品包", GetType(Boolean)))
' Session("DG_ShoppingCart") = tmpCart ' 第一次加载 -- 预填充一些数据
' For i= 1 to 6
' dr = tmpCart.NewRow()
' dr(0) = "1"
' dr(1) = "产品" & i.ToString
' dr(2) = 1.23 * (i+1)
' dr(3) = false
' tmpCart.Rows.Add(dr)
' Next
' Return tmpCart
' Else
' Return Session("DG_ShoppingCart")
' End If
'End Get
'End Property 'Sub Page_Init(sender As Object, e As EventArgs)
' MyDataGrid.EnableViewState = true
'End Sub Sub Page_Load(sender As Object, e As EventArgs)
'CartView = Cart.DefaultView
If Not IsPostBack Then
BindGrid
End If
End Sub 'Sub BindGrid()
' MyDataGrid.DataSource = CartView
' MyDataGrid.DataBind()
' End Sub
Sub BindGrid()
Dim objconnection1 As SqlConnection '定义连接
Dim strConnection1 As String = "user id=sa;password=1979;database=Northwind;server=192.168.0.253;connect Timeout=30"
objconnection1 = New SqlConnection(strConnection1) '引用
Dim strsql As String = "select * from customers"
Dim objDataSet As New DataSet()
Dim objadapter As New SqlDataAdapter(strsql, objconnection1)
objadapter.Fill(objDataSet, "testtable")
Dim objtable As DataTable
objtable = objDataSet.Tables("testtable")
Dim objDataView As New DataView(objDataSet.Tables("testtable"))
MyDataGrid.DataSource = objDataView
MyDataGrid.DataBind()
'objDataSet.close
objconnection1.close
End Sub Sub btnUpdate_click(sender As Object, e As EventArgs)
Dim i As Integer
Dim _item As DataGridItem
Dim dr As DataRow For i = 0 To MyDataGrid.Items.Count - 1 _item = MyDataGrid.Items(i)
Dim qtyTextBox As TextBox= _item.FindControl("txtQty")
Dim giftCheckBox As CheckBox = _item.FindControl("chkGIft")
'response.write (qtyTextBox.Text &"<br>")
Dim objconnection2 As SqlConnection '定义连接
Dim strConnection2 As String = "user id=sa;password=1979;database=Northwind;server=192.168.0.253;connect Timeout=30"
objconnection2 = New SqlConnection(strConnection2) '引用
if giftCheckBox.Checked=True then
objconnection2.open()
Dim strsql="update customers set testint='"&qtyTextBox.Text &"' "
response.write (strsql)
response.end
end if
' 对于数据库,我们应使用一条更新命令。
' 因为这是一个内存内数据表,所以我们只更改内存内的行。
' dr = Cart.Rows(i)
' dr(0) = qtyTextBox.Text
' dr(3) = giftCheckBox.Checked
Next
BindGrid
End Sub
' Function CalcTotal (count As Integer, price As Double) As Double
' Dim total As Double
'
' total = count * price
' runningTotal += total
'
' CalcTotal = total
' End Function </script>
<body>
<h3><font face="宋体">DataGrid 的自定义编辑</font></h3>
<form runat="server" ID="Form1">
<ASP:DataGrid id="MyDataGrid" runat="server" BorderColor="black" BorderWidth="1" GridLines="none" CellPadding="4" Font-Name="宋体" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd" AutoGenerateColumns="false">
<Columns>
<asp:TemplateColumn HeaderText="companyname">
<ItemTemplate>
<asp:TextBox id=txtQty runat="server"
Text='<%# DataBinder.Eval(Container.DataItem, "testint") %>'
Width="40px"
/>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn HeaderText="companyname" DataField="companyname" />
<asp:BoundColumn HeaderText="companyname" DataField="companyname" DataFormatString="{0:c}" />
<asp:TemplateColumn HeaderText="testint">
<ItemTemplate>
<center>
<asp:CheckBox id="chkGIft" runat="server" />
</center>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</ASP:DataGrid>
<asp:LinkButton id="btnUpdate" runat="server" Text="更新合计" Font-Name="Verdana" Font-Size="9pt" onClick="btnUpdate_click" />
</form>
</body>
<%@ import namespace="System.Data.SqlClient" %>
<script language="vb" runat="server">
private sSqlCon as string = "server=localhost;uid=sa;pwd=;database=northwind" public sub Page_Load(sender as Object, e as EventArgs) if not IsPostBack then
Bind()
end if end subprivate sub Bind() dim SqlCon as new SqlConnection(sSqlCon)
dim SqlCmd as new StringBuilder()
SqlCmd.Append("SELECT ProductName,UnitPrice,")
SqlCmd.Append("UnitsInStock,UnitsOnOrder,")
SqlCmd.Append("ProductID FROM Products")
dim sda as new SqlDataAdapter(SqlCmd.ToString(),SqlCon)
dim ds as new DataSet()
sda.Fill(ds,"products")
DGProducts.DataSource = ds.Tables("Products").DefaultView
DGProducts.DataBind()end subpublic sub DGProducts_Edit(sender as Object, e as DataGridCommandEventArgs) DGProducts.EditItemIndex = e.Item.ItemIndex
Bind()end subpublic sub DGProducts_Cancel(sender as Object, e as DataGridCommandEventArgs) DGProducts.EditItemIndex = -1
Bind()end subpublic sub DGProducts_Update(sender as Object, e as DataGridCommandEventArgs) dim sProductName,sUnitsInStock,sUnitsOnOrder,sProductID as string
sProductName = CType(e.Item.Cells(1).Controls(0), TextBox).Text
sUnitsInStock = CType(e.Item.Cells(2).Controls(0), TextBox).Text
sUnitsOnOrder = CType(e.Item.Cells(3).Controls(0), TextBox).Text
sProductID = e.Item.Cells(5).Text dim sSqlCmd as new StringBuilder()
sSqlCmd.Append("UPDATE Products ")
sSqlCmd.Append("SET ProductName = @ProductName,")
sSqlCmd.Append("UnitsInStock = @UnitsInStock,")
sSqlCmd.Append("UnitsOnOrder = @UnitsOnOrder ")
sSqlCmd.Append("WHERE ProductID = @ProductID") dim SqlCon as new SqlConnection(sSqlCon)
Dim SqlCmd as new SqlCommand(sSqlCmd.ToString(),SqlCon)
SqlCmd.Parameters.Add(new SqlParameter("@ProductName", SqlDbType.NVarChar, 40))
SqlCmd.Parameters("@ProductName").Value = sProductName
SqlCmd.Parameters.Add(new SqlParameter("@UnitsInStock", SqlDbType.SmallInt))
SqlCmd.Parameters("@UnitsInStock").Value = sUnitsInStock
SqlCmd.Parameters.Add(new SqlParameter("@UnitsOnOrder", SqlDbType.SmallInt))
SqlCmd.Parameters("@UnitsOnOrder").Value = sUnitsOnOrder
SqlCmd.Parameters.Add(new SqlParameter("@ProductID", SqlDbType.SmallInt))
SqlCmd.Parameters("@ProductID").Value = sProductID SqlCon.Open()
SqlCmd.ExecuteNonQuery()
SqlCon.Close() DGProducts.EditItemIndex = -1
Bind()end sub</script>
<html>
<body>
<head> <style rel="stylesheet">
H3 { font: bold 11pt Verdana, Arial, sans-serif; }
.products { font: 9pt Verdana, Arial, sans-serif; }
.productsHead { font: bold 9pt Verdana, Arial, sans-serif;
background-color:Maroon; color:white; }
a { text-decoration:none; }
a:hover { text-decoration:underline; color:maroon; }
</style> </head>
<form runat="server">
<H3>Northwind Inventory Management - VisualBasic.NET</H3><asp:DataGrid
id="DGProducts"
runat="server"
Cellpadding="4" Cellspacing="0" Width="750"
BorderWidth="1" Gridlines="None"
AlternatingItemStyle-BackColor="Tan"
HeaderStyle-CssClass="productsHead"
Font-Size="12"
AutoGenerateColumns="false"
OnEditCommand="DGProducts_Edit"
OnCancelCommand="DGProducts_Cancel"
OnUpdateCommand="DGProducts_Update"
>
<Columns>
<asp:EditCommandColumn
ButtonType="LinkButton"
CancelText="Cancel"
EditText="Edit"
UpdateText="Update"
/>
<asp:BoundColumn DataField="ProductName" HeaderText="Product Name" />
<asp:BoundColumn DataField="UnitsInStock" HeaderText="Units in Stock" />
<asp:BoundColumn DataField="UnitsOnOrder" HeaderText="Units on Order" />
<asp:BoundColumn DataField="UnitPrice" HeaderText="Price Per Unit"
DataFormatString="{0:C}" ReadOnly="true" />
<asp:BoundColumn DataField="ProductID" HeaderText="Product ID"
ReadOnly="true" />
</columns>
</asp:DataGrid>
</form>
</body>
</html>
<body>
<table width="750" align="center">
<tr>
<td>
<form id="Form1" runat="server">
<asp:datagrid id="DGProducts" runat="server" OnUpdateCommand="DGProducts_Update" OnCancelCommand="DGProducts_Cancel" OnEditCommand="DGProducts_Edit" AutoGenerateColumns="False" Font-Size="14px" HeaderStyle-CssClass="productsHead" AlternatingItemStyle-BackColor="Tan" Gridlines="None" BorderWidth="0px" Width="750px" Cellpadding="4" PageSize="5" AllowPaging="True" onpageindexchanged="pagechanged" PagerStyle-Mode="NumericPages">
<FooterStyle HorizontalAlign="Right"></FooterStyle>
<HeaderStyle ForeColor="Beige" CssClass="productsHead" BackColor="#0099CC"></HeaderStyle>
<AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle>
<Columns>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Update" CancelText="Cancel" EditText="Edit">
<HeaderStyle HorizontalAlign="Center" Width="62px"></HeaderStyle>
</asp:EditCommandColumn>
<asp:BoundColumn DataField="fcid" HeaderText="序号">
<HeaderStyle HorizontalAlign="Center" Width="62px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="vfcdate" HeaderText="登记时间">
<HeaderStyle HorizontalAlign="Center" Width="62px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="fcch" HeaderText="发车序号">
<HeaderStyle HorizontalAlign="Center" Width="62px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="fcbusno" HeaderText="车号">
<HeaderStyle HorizontalAlign="Center" Width="62px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="fcneze" HeaderText="本次营运总额">
<HeaderStyle HorizontalAlign="Center" Width="62px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="fcfhfq" HeaderText="发货人付清">
<HeaderStyle HorizontalAlign="Center" Width="62px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="fcdqgs" HeaderText="发货人定期结算">
<HeaderStyle HorizontalAlign="Center" Width="62px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="fcshdsef" HeaderText="收货公司代收运费">
<HeaderStyle HorizontalAlign="Center" Width="62px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="fcpczsfe" HeaderText="本次租车费用">
<HeaderStyle HorizontalAlign="Center" Width="62px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="fcfhzfzc" HeaderText="发货公司支付租车运费">
<HeaderStyle HorizontalAlign="Center" Width="62px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="fczfdate" HeaderText="付车费时间">
<HeaderStyle HorizontalAlign="Center" Width="62px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="fcshzf" HeaderText="收货公司代收租车运费">
<HeaderStyle HorizontalAlign="Center" Width="62px"></HeaderStyle>
</asp:BoundColumn>
</Columns>
</asp:datagrid>
</td>
</tr>
<tr>
<td>
<asp:label id="lblPageCount" runat="server" Font-size="12px"></asp:label><asp:label id="lblCurrentIndex" runat="server" Font-size="12px"></asp:label><asp:linkbutton id="btnFirst" onclick="PagerButtonClick" runat="server" Font-size="8pt" CommandArgument="0" ForeColor="navy" Font-Name="verdana"></asp:linkbutton>
<asp:linkbutton id="btnPrev" onclick="PagerButtonClick" runat="server" Font-size="8pt" CommandArgument="prev" ForeColor="navy" Font-Name="verdana"></asp:linkbutton>
<asp:linkbutton id="btnNext" onclick="PagerButtonClick" runat="server" Font-size="8pt" CommandArgument="next" ForeColor="navy" Font-Name="verdana"></asp:linkbutton>
<asp:linkbutton id="btnLast" onclick="PagerButtonClick" runat="server" Font-size="8pt" CommandArgument="last" ForeColor="navy" Font-Name="verdana"></asp:linkbutton>
</td>
</tr>
</FORM>
</table>
</body>
</HTML>