ASP.NET GridView RowSelect + DetailsView + SQLDataSource 使用方法

 

   Default.aspx
 
   <asp:Table ID="Table2" runat="server">
      <asp:TableRow>
         <asp:TableCell VerticalAlign="Top">
            <asp:SqlDataSource ID="SqlDataSource1" runat="server"
            ConnectionString="Data Source=.\SqlExpress; Initial Catalog=Soccer; Integrated Security=SSPI" />
 
            <asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1"
            AutoGenerateSelectButton="true" />
         </asp:TableCell>
 
         <asp:TableCell VerticalAlign="Top">
            <asp:SqlDataSource ID="SqlDataSource2" runat="server"
            ConnectionString="Data Source=.\SqlExpress; Initial Catalog=Soccer; Integrated Security=SSPI" />
 
            <asp:DetailsView ID="DetailsView1" runat="server" visible="false" />
         </asp:TableCell>
      </asp:TableRow>
   </asp:Table>
 

 

   Default.aspx.vb
 
   Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
      Create_Select_GridView()
   End Sub
 
   Protected Sub GridView1_SelectedIndexChanged(ByVal sender As Object, _
   ByVal e As System.Web.UI.WebControls.GridViewSelectEventArgs) _
   Handles GridView1.SelectedIndexChanging
 
      SqlDataSource2.SelectCommand = "SELECT dbo.Team.Team_Name " & _
      "AS 'Team Name', dbo.League.League_Name AS 'League Name' FROM dbo.Team " & _
      "INNER JOIN dbo.League ON dbo.Team.League_ID=dbo.League.League_ID " & _
      "WHERE Team_Name = @TeamName"
 
      If SqlDataSource2.SelectParameters.Count = 0 Then
         SqlDataSource2.SelectParameters.Add("TeamName", "")
      End If
 
      SqlDataSource2.SelectParameters("TeamName").DefaultValue = _
      GridView1.Rows(e.NewSelectedIndex).Cells(1).Text
 
      DetailsView1.Visible = True
      DetailsView1.DataSourceID = SqlDataSource2.ID
 
   End Sub
 
   Private Sub Create_Select_GridView()
 
      SqlDataSource1.SelectCommand = "SELECT dbo.Team.Team_Name " & _
      "AS 'Team Name', dbo.League.League_Name AS 'League Name' FROM dbo.Team " & _
      "INNER JOIN dbo.League ON dbo.Team.League_ID=dbo.League.League_ID " & _
      "ORDER BY dbo.League.League_Name, dbo.Team.Team_Name"
 
   End Sub