2

このテンプレート フィールドを gridview 列に追加し、コード ビハインドの列から値、電子メール アドレスにアクセスする必要があります。最初に DataKeyNames を追加しましたが、これは最初のレコード値のみを取得します。ループを実行するときに、各レコードの値を選択していないようです。

誰かがより簡単な方法を知らない限り、おそらく FindControl ステートメントを使用できるように、電子メールをラベルに追加したいと思います。メールのハイパーリンクがラベルに表示されません。メールアドレスが読み取れないことを除けば、ラベルタグがなくても問題なく動作します。

<asp:TemplateField HeaderText="Email">
    <ItemTemplate>      
        <a href="mailto:<%# Eval("email") %>"><%#Eval("email")%> </a>     
    </ItemTemplate>
</asp:TemplateField>

以下のバリエーションを試しました:

<asp:TemplateField HeaderText="Email">
    <ItemTemplate> 
        <asp:Label ID="Email99" runat="server" <a href="mailto:<%# Eval("email") %>"><%#Eval("email")%> </a> ></asp:Label>
    </ItemTemplate>
</asp:TemplateField>

インライン コードにエラーは表示されず、次のように報告されます。 パーサー エラー メッセージ: サーバー タグの形式が正しくありません。

更新: HyperLinkField を列に追加した後の ASP は次のとおりです。

<Columns>     
   <asp:BoundField DataField="usersLogonName" HeaderText="Logon Name" >
       <ControlStyle Width="50px" />
   </asp:BoundField>
   <asp:BoundField DataField="userDBLanguage" HeaderText="Language" >
       <ControlStyle Width="30px" />
   </asp:BoundField>

   <asp:HyperLinkField runat="server" DataNavigateUrlFields="email" DataNavigateUrlFormatString="mailto:{0}" DataTextField="email" />     

   <asp:BoundField DataField="LastActivityDate" HeaderText="Last Activity" />                                                                                                              
</Columns>

このコード行は、James Johnson によって提供された Templated Field ソリューションから値を読み取ります...

 Dim emailAdd As String = GridView4.DataKeys(dr.RowIndex)("Email")

このスレッドのロックが解除された場合、彼は称賛に値します。

VB.netを利用したASPページです

助けてくれてありがとう。

4

1 に答える 1

4

次を使用しHyperLinkFieldます。

<asp:GridView ID="GridView1" runat="server" ...>
    <Columns>
        <asp:HyperLinkField DataNavigateUrlFields="email" DataNavigateUrlFormatString="mailto:{0}" DataTextField="email" />
    </Columns>
</asp:GridView>

TemplateField上記に問題がある場合は、HyperLinkコントロールを含むa を使用できます。

<asp:TemplateField HeaderText="Email"> 
    <ItemTemplate>
        <asp:HyperLink runat="server" Text='<%# Eval("email") %>' NavigateUrl='<%# string.Format("mailto:{0}", Eval("email"))%>' />
    </ItemTemplate>
</asp:TemplateField>
于 2012-04-23T16:24:24.307 に答える