2013-04-10 46 views
5

這是我在C#中的代碼。如何通過超鏈接字段在變量後面傳遞代碼

protected void Page_Load(object sender, EventArgs e) 
    { 
      Name = "Nitin";      
    } 

我有一個GridView,其中有一個Hyperlinkfield.I想從C#頁(一個在後面的代碼)通過HyperLinkField字段發送Name下頁,但它不是的綁定列的GridView控件中的一個(即我從EntityDataSource獲得)。這是我的asp.net代碼。

代碼

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Id" DataSourceID="WorkItemsEntityDataSource"> 
    <Columns> 
     <asp:hyperlinkfield datatextfield="Id"      
       datanavigateurlfields="Id" 
       datanavigateurlformatstring="~\WorkItems.aspx?Id={0}"   
       headertext="Id"/> 
     <asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" /> 
     <asp:BoundField DataField="TFSId" HeaderText="TFSId" SortExpression="TFSId" /> 
     <asp:CheckBoxField DataField="IsBillable" HeaderText="IsBillable" SortExpression="IsBillable" /> 
    </Columns> 
</asp:GridView> 
+0

張貼您的網格視圖代碼和詳細闡述你的問題清楚.. – 2013-04-10 10:42:48

回答

2

可以從代碼通過導航URL後面也是這樣

在ASPX頁

   <asp:TemplateField> 
        <ItemTemplate> 
         <asp:HyperLink ID="hyp" runat="server" Text="Navigation"></asp:HyperLink> 
        </ItemTemplate> 
       </asp:TemplateField>  

在代碼後面用戶網格視圖數據結合像這樣的事件

protected void grddata_RowDataBound(object sender, GridViewRowEventArgs e) 
    {  
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      int ID = Convert.Int32(DataBinder.Eval(e.Row.DataItem, "ID")); 
      HyperLink hyp = (HyperLink)e.Row.FindControl("hyp"); 
      hyp.NavigateUrl = "Test.aspx?Name='" + Request.QueryString["test"] + "'&&ID"+ ID +""; 
     } 
    } 

我想這會幫助你...

+0

感謝Buddy.It的工作原理就像一個魅力。 – 2013-04-10 12:10:26

+0

:)你的歡迎! – Rajpurohit 2013-04-10 12:11:43

+0

嗨Rajpurohit,我想知道如何通過名稱也通過HyperLinkField從綁定字段的GridView發送Id。 – 2013-04-10 12:57:36

0

我不知道有關實際上是一個數據綁定控件使用它,但你肯定建設的網址不包含查詢參數「名稱」。它應該是這樣的:

~\WorkItems.aspx?Id={0}&Name={1} 

的只是名稱更換ID如果不需要編號:

~\WorkItems.aspx?Name={0} 

作爲替代 - 我不知道是什麼性質呢你的數據對象有以及如何綁定到他們。我認爲你沒有問題,因爲綁定到Id的作品(可能)。

UPDATE

如果名稱不從數據源返回時,您應該創建一個包含名稱字段,以及新的實體,或使用一些常量名,就像你在一個頁面(不知道它這個聲明每行應顯示相同的名稱)。 第二個選項可以被實現這樣的:

~\WorkItems.aspx?Id={0}&Name=<%= Name %> 
+0

其實名稱不是我從EntityDataSource那是代碼後面的變量.So,你知道如何發送請please.Any幫助將不勝感激。 – 2013-04-10 10:52:40

+0

發佈了一個關於將服務器變量嵌入到ASP頁面的更新頁面 – 2013-04-10 10:59:40

0

您可以使用:

<asp:TemplateField HeaderText="test"> 
    <ItemTemplate> 
      <asp:HyperLink runat="server" ID="temp" NavigateUrl='<%# String.Format("~\WorkItems.aspx?Id={0}&Name={1}", Eval("Name"), Name)%>' ></asp:HyperLink> 
     </ItemTemplate> 
</asp:TemplateField> 
0

你可以這樣做修改HyperLinkField的網址:

protected void pendingAccountsGrid_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     ((HyperLink) e.Row.Cell[0].Controls[0]).NavigateUrl = "http://stackoverflow.com"; 
    } 
} 

只要改變它e.Row.Cell[0]指定正確的索引。