2012-11-27 49 views
0

我將數據綁定到GridView控件。 最後一列有一個圖片URL鏈接。GridView - 行單擊 - 轉到詳細信息頁面

 <asp:GridView ID="gvSearchResults" runat="server" AutoGenerateColumns="False" Width="100%" OnRowCommand="gvccase_RowCommand" RowStyle-CssClass="rowHover">…….. 


<asp:TemplateField> 
    <ItemTemplate> 
    <asp:ImageButton ID="lnbEdit" AlternateText="edit" ImageUrl="~/images/edit_icon.gif" 
               runat="server" CommandName="cmdEdit" /> 
             </ItemTemplate> 
             <HeaderTemplate> 
              Edit 
             </HeaderTemplate> 
            </asp:TemplateField> 

當用戶上的最後一列點擊OnRowCommnd事件(保護無效gvccase_RowCommand(對象發件人,System.Web.UI.WebControls.CommandEventArgs E))被調用。

如何閱讀用戶點擊哪一行?第一列有案例#。我想閱讀「OnRowCommand」中的Case#。怎麼做?

或 我想要完成的是......當用戶點擊某一行時,我想將它們帶到詳細信息頁面。

謝謝 史密斯

回答

0

爲什麼不這樣做:

<asp:GridView runat="server" ID="gvMajor" EmptyDataText="Your search terms did not match any records"> 
    <Columns> 
     <asp:BoundField DataField="MajorCode" HeaderText="Major Code" /> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:ImageButton ID="lbModify" runat="server" CommandArgument='<%# Eval("MajorId") %>' OnClick="lbModify_Click" ImageUrl="~/Modify.png" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

然後在後臺代碼:

protected void lbModify_Click(object sender, EventArgs e) 
{ 
    var editLink = ((ImageButton)sender); 
    //editLink.CommandArgument == MajorId 
} 

只需確保將gridview綁定到正確的數據源,如下所示:

DataTable dt = new DataTable(); 
    dt.Columns.Add("MajorId"); 
    dt.Columns.Add("MajorCode"); 

    //start loop here if needed 
    DataRow dr = dt.NewRow(); 

    dr["MajorId"] = 1; 
    dr["MajorCode"] = "MAJOR CODE 1"; 
    dt.Rows.Add(dr); 
    //end loop 

    gvMajor.DataSource = dt; 
    gvMajor.DataBind(); 
0

您可以試試這個。

HTML

<asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server" OnRowCommand="GridView1_RowCommand"> 
     <Columns> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <asp:Label ID="lblDatos" Text='<%#Eval("nombre")%>' runat="server" > 
        </asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <asp:ImageButton ID="lnbEdit" AlternateText="edit" CommandArgument='<%#Eval("link")%>' 
              runat="server" CommandName="cmdEdit" /> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView>  

CODE BEHINDE

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!this.IsPostBack) 
      this.llenar(); 

    } 

    void llenar() 
    { 

     DataTable dt = new DataTable(); 
     dt.Columns.Add("nombre"); 
     dt.Columns.Add("link"); 
     DataRow dr= dt.NewRow(); 
     DataRow d1 = dt.NewRow(); 

     dr["nombre"] = "google"; 
     d1["nombre"] = "amazon"; 
     dr["link"] = "http://google.com"; 
     d1["link"] = "http://amazon.com"; 
     dt.Rows.Add(dr); 
     dt.Rows.Add(d1); 

     this.GridView1.DataSource = dt; 
     this.GridView1.DataBind(); 


    } 

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 

     if (e.CommandName == "cmdEdit") 
     { 
      Response.Redirect(e.CommandArgument.ToString()); 

     } 
    } 
}