本周主要的工作是为LetByNET开发一个新的AMS: 1,AMS的显示,我使用的是GridView控件 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" AllowPaging="false" OnRowDataBound= "selectcolor" ‘鼠标颜色变化的sub OnRowCommand="rowdelete"’行上按钮的单击事件,通过下面的ButtonField的中的CommandName进行执行> // <Columns> <asp:BoundField HeaderText="Position" DataField="id_ams_position" /> <asp:BoundField HeaderText="Advert Name" DataField="name_ams"/> <asp:HyperLinkField HeaderText="Advert image" DataTextField="code_ams" /> <asp:BoundField HeaderText="Country" DataField="CountryName" /> <asp:BoundField HeaderText="County&City" DataField="CountyCityName" /> <asp:BoundField HeaderText="District" DataField="DistrictName" /> <asp:BoundField HeaderText="Usertype" DataField="TypeName" /> <asp:ButtonField HeaderText="Edit" ButtonType="Link" Text="Edit" CommandName="editrow" /> <asp:ButtonField HeaderText="Delete" ButtonType="Link" Text="Delete" CommandName="deleterow" /> </Columns> </asp:GridView> 后台代码: (1) ProtectedSub selectcolor(send AsObject, e AsGridViewRowEventArgs) //gridview的行颜色变换,鼠标事件 e.Row.Attributes.Add("onmouseover", "oldColor=this.style.backgroundColor;this.style.backgroundColor='skyblue';") ' when mouse on the row e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=oldColor;") ' when the mouse out of the row EndSub (2) PublicSub rowdelete(ByVal sender AsObject, ByVal e AsGridViewCommandEventArgs) If e.CommandName = "deleterow"Then //如果buttonField的commandname等于deleterow则执行以下命令 Dim i AsInteger Convert.ToInt32(e.CommandArgument) ' get the index of the selected row Dim position AsInteger Convert.ToInt32(Me.GridView1.Rows(i).Cells(0).Text) ' get the the first cell values of the selected row Dim sql3 AsString = "DELETE FROM Ams_Position WHERE id_ams_position = ' " & position & "'" gdelete(sql3) Response.Redirect(Request.Url.ToString()) ' redirect to current page, same as refresh EndIf If e.CommandName = "editrow" Then //如果ButtonField的commandname等于editrow则执行下面 Dim i AsInteger i = Convert.ToInt32(e.CommandArgument) //获取当前的指向的行的值 Response.Redirect("WebForm3.aspx?position=" & Convert.ToString(Me.GridView1.Rows(i).Cells(0).Text) & "") //获取第一列的值并用 http进行传递 EndIf EndSub 2,使用下拉列表进行查询(复杂的sql查询) 1,显示部分 <asp:DropDownList ID="ddcountry" runat="server" AutoPostBack="true"> </asp:DropDownList> <asp:DropDownList ID="ddcounty" runat="server" AutoPostBack="true"> </asp:DropDownList> <asp:DropDownList ID="ddDistrict" runat="server" AutoPostBack="true"> </asp:DropDownList> <asp:DropDownList ID="ddusertype" runat="server" AutoPostBack="true"> </asp:DropDownList> 2,后台代码 Dim sql1 As String = "SELECT Ams_Position.id_ams_position, Ams_Position.name_ams,Ams_Position.code_ams,Country.CountryName,CountyCity.CountyCityName,District.DistrictName,UserType.TypeName from Ams_Position LEFT JOIN Country ON Ams_Position.idCountry=Country.idCountry LEFT JOIN CountyCity ON Ams_Position.idCountyCity=CountyCity.idCountyCity LEFT JOIN District ON Ams_Position.idDistrict=District.idDistrict LEFT JOIN UserType ON Ams_Position.idUserType=UserType.idUserType WHERE 1 = 1" Public Shared Function advert(ByVal idCountry As Integer, ByVal idCountyCity As Integer, ByVal idDistrict As Integer, ByVal userType As Integer, ByVal sql As String) As DataSet 'Open connection Dim objConn As SqlConnection = openDBConnection() Dim strSQL As String = sql Dim objCmd As SqlCommand = New SqlCommand(strSQL, objConn) 'Input Params objCmd.Parameters.Add("@idCountry", SqlDbType.Int).Value = idCountry objCmd.Parameters.Add("@idCountyCity", SqlDbType.Int).Value = idCountyCity objCmd.Parameters.Add("@idDistrict", SqlDbType.Int).Value = idDistrict objCmd.Parameters.Add("@userType", SqlDbType.Int).Value = userType 'Must use an adapter and DataSet to use paging (since these retrieve data ICollections and store on cache) Dim objAda As SqlDataAdapter = New SqlDataAdapter(objCmd) Dim objDSet As DataSet = New DataSet objAda.Fill(objDSet) 'Clean up objCmd.Dispose() objAda.Dispose() closeDBConnection(objConn) 'Return value Return objDSet End Function Protected Sub ddcountrychange(sender As Object, e As EventArgs) Handles ddcountry.SelectedIndexChanged Dim country As Integer = ddcountry.SelectedValue Dim county As Integer = ddcounty.SelectedValue Dim district As Integer = ddDistrict.SelectedValue Dim usertype As Integer = ddusertype.SelectedValue If country <> 0 Then sql2 = sql1 + "and Ams_Position.idCountry = @idCountry" Else sql2 = sql1 End If Dim obj As DataSet = advert(country, county, district, usertype, sql2) GridView1.DataSource = obj GridView1.DataBind() End Sub Protected Sub ddcountychange(sender As Object, e As EventArgs) Handles ddcounty.SelectedIndexChanged Dim country As Integer = ddcountry.SelectedValue Dim county As Integer = ddcounty.SelectedValue Dim district As Integer = ddDistrict.SelectedValue Dim usertype As Integer = ddusertype.SelectedValue If county <> 0 Then sql2 = sql1 + "and Ams_Position.idCountyCity = @idCountyCity" Else sql2 = sql1 + "and Ams_Position.idCountry = @idCountry" End If Dim obj As DataSet = advert(country, county, district, usertype, sql2) GridView1.DataSource = obj GridView1.DataBind() End Sub Protected Sub dddistrictchange(sender As Object, e As EventArgs) Handles ddDistrict.SelectedIndexChanged Dim country As Integer = ddcountry.SelectedValue Dim county As Integer = ddcounty.SelectedValue Dim district As Integer = ddDistrict.SelectedValue Dim usertype As Integer = ddusertype.SelectedValue If district <> 0 Then sql2 = sql1 + "and Ams_Position.idDistrict = @idDistrict" Else sql2 = sql1 + "and Ams_Position.idCountyCity = @idCountyCity" End If Dim obj As DataSet = advert(country, county, district, usertype, sql2) GridView1.DataSource = obj GridView1.DataBind() End Sub Protected Sub ddusertypechange(sender As Object, e As EventArgs) Handles ddusertype.SelectedIndexChanged Dim country As Integer = ddcountry.SelectedValue Dim county As Integer = ddcounty.SelectedValue Dim district As Integer = ddDistrict.SelectedValue Dim usertype As Integer = ddusertype.SelectedValue If usertype <> 0 Then sql2 = sql1 + "and Ams_Position.idUserType = @userType" Else sql2 = sql1 End If Dim obj As DataSet = advert(country, county, district, usertype, sql2) GridView1.DataSource = obj GridView1.DataBind() End Sub