2011-12-11 99 views
0

我正在使用ASP.NET 4和MVC并尝试添加代码来处理“选择”链接。一旦用户选择该行,我需要显示更多详细信息的新页面。我试图捕获rowcommand,但我从来没有碰到过断点。这是第一页我当前的GridView控件代码 -GridView - 句柄选择链接

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<ValidationPortal.Models.Contact>>" %> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

    <form id="form1" runat="server"> 

    <h2>Index</h2> 

    <p> 
     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
      DataKeyNames="Id" DataSourceID="SqlDataSource1"> 
      <Columns> 
       <asp:CommandField ShowSelectButton="True" /> 
       <asp:BoundField DataField="Id" HeaderText="Id" InsertVisible="False" 
        ReadOnly="True" SortExpression="Id" /> 
       <asp:BoundField DataField="FirstName" HeaderText="FirstName" 
        SortExpression="FirstName" /> 
       <asp:BoundField DataField="LastName" HeaderText="LastName" 
        SortExpression="LastName" /> 
       <asp:BoundField DataField="Phone" HeaderText="Phone" SortExpression="Phone" /> 
       <asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" /> 
      </Columns> 
     </asp:GridView> 
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
      ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
      SelectCommand="SELECT * FROM [Contacts]"></asp:SqlDataSource> 

    </p> 
    </form> 

</asp:Content> 

什么我需要添加,使这项工作?

回答

2

我认为你需要在网格标记中指定一个OnSelectedIndexChanged事件。您的活动可能只是使用所选项目的ID重定向到您的详细信息页面。这将是这个样子:

网:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataKeyNames="Id" DataSourceID="SqlDataSource1" 
    OnSelectedIndexChanged="SelectEvent"> 
     // rest of grid definitions 
</asp:GridView> 

C#:

protected void SelectEvent(object sender, EventArgs e) 
{ 
    if (GridView1.SelectedIndex >= 0) 
     Response.Redirect("yourpage.aspx?itemid=" + (int)GridView1.SelectedValue); 
} 

就个人而言,你是做我会跳过选择命令和一个链接,可以创建项目模板什么如图所示here

0

试试这个方法

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName == "Select") 
     { 
      // Do something 
     } 
    } 

如果你不想使用行命令,或者你想明确地火rowcommand然后使用下面的代码段

int GridView1TotalCount = GridView1.Rows.Count; 
     int r = Convert.ToInt32(dslno)-1; 
     if (r != -1) 
     { 
      if (GridView1TotalCount > r) 
      { 

       GridViewRow thisGridView1 = GridView1.Rows[r]; 
       ClientScript.GetPostBackClientHyperlink(this.GridView1, "Select$" + thisGvEmpMaster.RowIndex); 
       // Do something here you have datakey like 
      int dkkey = Convert.ToString(GridView1.DataKeys[thisGridView1.RowIndex].Value); 


      } 
     }