2017-07-24 99 views
1

我目前工作的一個在內部項目到URL中,我創建連接到SQL表看起來像這樣一個GridView:C#asp.net GridView的導航在GridView中排

GridView1

Example image of GridView1

我創建的視圖內容按鈕用下面的代碼:

<Columns> 
    <asp:ButtonField ButtonType="Button" Text="View Content" CommandName="Select" /> 
    <asp:BoundField DataField="ContentID" HeaderText="ContentID" InsertVisible="False" ReadOnly="True" SortExpression="ContentID" /> 
    <asp:BoundField DataField="Code" HeaderText="Code" SortExpression="Code" /> 
    <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" /> 
    <asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" /> 
    <asp:BoundField DataField="URL" HeaderText="URL" Visible="true" SortExpression="URL" />     
</Columns> 

但是,這是我現在卡住。 我想單擊視圖內容按鈕並將其導航到所選行上的URL。

URL來自SQL表,並有一個字符串,所以我想,它需要先轉換,但我可能是錯的。

我開始把我的代碼如下所示:

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    GridViewCommandEventArgs x = (GridViewCommandEventArgs)e; 
    if (x.CommandName == "Select") 
    { 
     GridViewRow row = GridView1.SelectedRow; 
    } 
} 

回答

0

添加您的代碼GridView1_RowCommand事件的gridview

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
     if (e.CommandName == "Select") 
     { 
      GridViewRow row = (GridViewRow)(((BoundField)e.CommandSource).NamingContainer); 
      int index = row.RowIndex; 

      string url = (GridView1.Rows[index].FindControl("URL") as BoundField).Text; 
      Response.Redirect(url); // url can be from your sql table 

     }  
} 

注:不要忘記添加OnRowCommand事件GrindView <asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand" >

+0

感謝您的回覆。我遵循了你的建議,現在它似乎想要做些什麼,但我得到以下錯誤。 無法投射「ASP.enquirehomepage_aspx」類型的對象來鍵入「System.Web.UI.WebControls.GridViewRow」。有任何想法嗎? –

+0

將'url'從'Label'投射到'BoundField' ..看到我的編輯 – AsifAli72090

+0

我已經提出了建議的更改,但出現以下錯誤。 **無法將類型'system.web.ui.control'轉換爲'system.web.ui.webcontrols.boundfield'。**這是在將'Label'更改爲'BoundField'後。你是否熟悉這個錯誤?我試圖自己研究它,但在這方面沒有發現任何用處。 –

0
  GridViewRow row = (GridViewRow)(((BoundField)e.CommandSource).NamingContainer); 
      int index = row.RowIndex; 

      string url = (GridView1.Rows[index].FindControl("URL") as BoundField).Text; 
      Response.Redirect(url); // url can be from your sql table 

所以我做了改變。不幸的是,BoundField不包含NamingContainer的定義。

此外,GridView1.Rows[index].FindControl("URL") as BoundField失敗由於以下錯誤,不能通過引用轉換,裝箱轉換,解包轉換或轉換類型「system.web.ui.control」到「system.web.ui.webcontrols.boundfield」空類型轉換。

+0

所以你必須在'templatefield'中將你的gridview轉換爲與我的答案:) – AsifAli72090

+0

:D現在我完全失去了。我會谷歌它:) –