0

ここStackOverflowで他のソリューションを探しましたが、それを理解できないようです。データグリッドにこのリンクボタンがあります:

    <asp:LinkButton 
        ID="lnkname" runat="server"
        Text='<%#Eval("Titel") %>'
        PostBackUrl='<%#"Details.aspx?ID="+Eval("ID").toString()%>'
        CausesValidation="false">
    </asp:LinkButton>

これはパラメータです:

<asp:ControlParameter ControlID="txtTitel" DefaultValue="*" Name="Titel" 
PropertyName="Text" Type="String" ConvertEmptyStringToNull="False" />

ID 値を次のページの details.aspx に移動したいのですが、次のエラーが発生します。

入力文字列は、正しい形式ではありませんでした。説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

Exception Details: System.FormatException: Input string was not in a correct format.

IDがINTであることと関係があることは知っていますが、修正方法がわかりません。

注:私はVB.NETでそれを行います

4

2 に答える 2

2

文字列へのキャストに問題があります

+Eval("ID").toString()

これを使って

PostBackUrl='<%# "Details.aspx?ID="+Eval("ID").ToString() %>'

する.toString()必要がありますToString()

編集 1

または、使用できます

Try using a HyperLinkField

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.hyperlinkfield.aspx

<asp:HyperLinkField
                 HeaderText="Client IP"
                 DataNavigateUrlFields="IP"
                 DataNavigateUrlFormatString="Details.aspx?id={0}"
                 DataTextField="ID"
                 DataTextFormatString="{0}"/>
于 2013-04-09T09:00:49.630 に答える
0

複数のパラメータを渡す必要がある場合は&、それらの間で使用できます。たとえば

PostBackUrl='<%# "Details.aspx?ID="+Eval("ID")+"&x=50" %>'

重要

Eval("ID")value のような任意の型の変数を のような文字列に連結 (結合) するときはいつでも、連結によってこのキャストが暗黙的に (自動的に) 行われるため、キャスト用"Details.aspx?ID="に記述する必要はありません。ToString()とのこの動作について確信がC#ありますVB.NET

だからあなたは簡単に書くことができます

PostBackUrl='<%# "Details.aspx?ID="+Eval("ID") %>'
于 2013-04-09T09:31:51.260 に答える