2012-08-07 110 views
0
protected void GridViewAddress_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     // Make sure the current GridViewRow is a data row. 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      // Make sure the current GridViewRow is either 
      // in the normal state or an alternate row. 
      if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate) 
      { 
       // Add client-side confirmation when deleting. 
       ((LinkButton)e.Row.Cells[1].Controls[0]).Attributes["onclick"] = "if(!confirm('Are you certain you want to delete this person ?')) return false;"; 
      } 
     } 
    } 



    } 
} 

我的問題是,我想我的網格視圖點擊並希望將用戶引導到另一個頁面。這是我必須抓住事件和用戶重定向到另一個點擊gridview的

回答

0

代碼您需要創建一個可點擊行的GridView。我爲您提供了鏈接以及鏈接中的代碼。如果你不熟悉VB,代碼是用VB編寫的,在註釋部分有用戶將其轉換爲C#。

Imports Microsoft.VisualBasic 
Imports System.ComponentModel 
Imports System.Web.UI 
Imports System.Web.UI.WebControls 

Namespace SampleControls 


    Public Class MyGridView 
     Inherits System.Web.UI.WebControls.GridView 

#Region "Properties" 

     <DefaultValue(False)> _ 
     Public Property EnableRowClick() As Boolean 
      Get 
       Dim ret As Boolean = False 
       Dim obj As Object = ViewState("EnableRowClick") 
       If obj IsNot Nothing Then 
        ret = CBool(obj) 
       End If 
       Return ret 
      End Get 
      Set(ByVal value As Boolean) 
       ViewState("EnableRowClick") = value 
      End Set 
     End Property 
#End Region 

#Region "Event" 


     Private Shared ReadOnly RowClickedEventKey As Object = New Object 

     Public Custom Event RowClicked As EventHandler(Of GridViewRowClickedEventArgs) AddHandler(ByVal value As EventHandler(Of GridViewRowClickedEventArgs)) 
       Events.AddHandler(RowClickedEventKey, value) 
      End AddHandler 

      RemoveHandler(ByVal value As EventHandler(Of GridViewRowClickedEventArgs)) 
       Events.RemoveHandler(RowClickedEventKey, value) 
      End RemoveHandler 

      RaiseEvent(ByVal sender As Object, ByVal e As GridViewRowClickedEventArgs) 
       Dim ev As EventHandler(Of GridViewRowClickedEventArgs) = TryCast(Events(RowClickedEventKey), EventHandler(Of GridViewRowClickedEventArgs)) 
       If ev IsNot Nothing Then 
        ev(sender, e) 
       End If 
      End RaiseEvent 
     End Event 

     Protected Overridable Sub OnRowClicked(ByVal e As GridViewRowClickedEventArgs) 
      RaiseEvent RowClicked(Me, e) 
     End Sub 

#End Region 

#Region "Postback handling" 
     Protected Overrides Sub RaisePostBackEvent(ByVal eventArgument As String) 
      If eventArgument.StartsWith("rc") Then 
       Dim index As Integer = Int32.Parse(eventArgument.Substring(2)) 
       Dim args As New GridViewRowClickedEventArgs(Me.Rows(index)) 
       OnRowClicked(args) 
      Else 
       MyBase.RaisePostBackEvent(eventArgument) 
      End If 

     End Sub 
#End Region 

#Region "Adding the wiring from client-side to server-side, causing the posback when row is clicked" 


     Protected Overrides Sub PrepareControlHierarchy() 
      MyBase.PrepareControlHierarchy() 

      If EnableRowClick Then 
       Dim i As Integer 
       For i = 0 To Rows.Count - 1 
        Dim argsData As String = "rc" & Rows(i).RowIndex.ToString() 
        Me.Rows(i).Attributes.Add("onclick", Page.ClientScript.GetPostBackEventReference(Me, argsData)) 
       Next 
      End If 

     End Sub 

#End Region 

    End Class 

#Region "Custom event argument type" 
    Public Class GridViewRowClickedEventArgs 
     Inherits EventArgs 

     Private _row As GridViewRow 
     Public Sub New(ByVal row As GridViewRow) 
      _row = row 
     End Sub 
     Public ReadOnly Property Row() As GridViewRow 
      Get 
       Return _row 
      End Get 
     End Property 
    End Class 
#End Region 

End Namespace 

Usage example 

[aspx] 

<%@ Register Namespace="SampleControls" TagPrefix="sc" %> 
... 
<sc:MyGridView ID="myGridView1" runat="server" AutoGenerateColumns=false EnableRowClick=true> 
      <Columns> 
       <asp:TemplateField HeaderText="Sample row header"> 
        <ItemTemplate> 
        Sample row data 
        </ItemTemplate> 
       </asp:TemplateField> 
      </Columns> 
</sc:MyGridView>[code-behind] 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     If Not Page.IsPostBack Then 
      Dim arr As New ArrayList() 
      arr.Add(1) 
      arr.Add(2) 
      arr.Add(3) 
      myGridView1.DataSource = arr 
      myGridView1.DataBind() 
     End If 
    End Sub Protected Sub myGridView1_RowClicked(ByVal sender As Object, ByVal e As SampleControls.GridViewRowClickedEventArgs) Handles myGridView1.RowClicked Response.Write("Index of the clicked row was: " + e.Row.RowIndex.ToString()) 

End Sub 

LINK:

http://aspadvice.com/blogs/joteke/archive/2006/01/07/14576.aspx#17887