2013-04-10 9 views
5

これはC#のコードです。ハイパーリンクフィールドを使用して変数の背後にあるコードを渡す方法

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

私はHyperlinkfield.IがHyperLinkFieldを経由して次のページに(背後にあるコードでは1)C#のページからNameを送りたいが存在するGridViewコントロールを持っていますが、それはBoundFieldの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

あなたのグリッドビューのコードを投稿してうまくいかない問題を明らかに投稿してください。 –

答えて

2

あなたがバインドされたユーザー・グリッドビューデータの背後にあるコードでこの

ASPXページで

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

のようにも後ろにコードからナビゲーションURLを渡すことができますこのようなイベント

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

Thanks Buddy.Itは魅力的です。 –

+0

:)あなたの歓迎!!!! – Rajpurohit

+0

こんにちはRajpurohit、私はどのように名前でHyperLinkFieldを介してGridViewのバインドフィールドからIDを送信するのだろうかと思います。 –

0

私は実際にデータバインドコントロールでそれを使用する方法についてわからないんだけど、あなたは間違いなく構築しているURLがqueryStringパラメータ「名前」を含んでいません。それは次のようになります。IDが必要とされていない場合は、単に名前をIDに置き換えるの

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

:置換用として

~\WorkItems.aspx?Name={0} 

を - 私はあなたのデータオブジェクトが持っているんどのような性質を知りませんどのようにそれらに縛るか。 Idにバインドする(おそらく)ので、問題はないと思います。

UPDATE名前がデータソースから戻っていない場合、あなたはそれこれをわからない(ページに宣言しているように、あなたは、いくつかの定数名を、同様の名前のフィールドを含む新しいエンティティを作成、または使用する必要がありますいずれか

すべての行に同じ名前を表示する必要があります)。 2番目のオプションは、このように実装することができます。

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

実際には、EntityDataSourceから取得したものではなく、変数の背後にあるコードです。あなたはそれをreply.Anyの助けてください。 –

+0

サーバー変数をASPページに埋め込む方法についての更新を投稿しました –

0

:ちょうどe.Row.Cell[0]に正しいインデックスを指定するように変更し

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"; 
    } 
} 

<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のURLを変更することができます。

関連する問題