2009-05-14 13 views
3

まず、私はasp.net n00bだから私と一緒に裸。 :)asp:aspでデータリストコントロール:LinkBut​​tonの内部 - 何か変わった

私はASP.NETを学ぼうとしている本の中で例を取り上げていますが、私はそこでは奇妙なことに遭遇しました。まず第一に、本に書かれているようにタイプすれば、VSは私にエラーを与えます。それは本に書かれているように、これはコードです:

<asp:DataList ID="employeesList" runat="server"> 
    <ItemTemplate> 
     <asp:Literal ID="extraDetailsLiteral" runat="server" EnableViewState="false" /> 
     Name: <strong><%#Eval("Name") %></strong><br /> 
     Username: <strong><%#Eval("Username") %></strong><br /> 
     <asp:LinkButton ID="detailsButton" runat="server" Text=<%#"View more details about " + Eval("Name")%> 
      CommandName="MoreDetailsPlease" 
      CommandArgument=<%#Eval("EmployeeID")%> /> 
    </ItemTemplate> 
    <SeparatorTemplate> 
     <hr /> 
    </SeparatorTemplate> 
</asp:DataList> 

だから、私はしばらくの間、それを摘み取り、そして実際にコンパイルし、この解決策を考え出したしました:I

<asp:DataList ID="employeesList" runat="server" onitemcommand="employeesList_ItemCommand"> 
    <ItemTemplate> 
     <asp:Literal ID="extraDetailsLiteral" runat="server" EnableViewState="false" /> 
     Name: <strong><%#Eval("Name") %></strong><br /> 
     Username: <strong><%#Eval("Username") %></strong><br /> 
     <asp:LinkButton ID="detailsButton" runat="server" Text='View more details about <%# Eval("Name") %>' 
      CommandName="MoreDetailsPlease" CommandArgument='<%Eval("EmployeeID") %>' /> 
    </ItemTemplate> 
    <SeparatorTemplate> 
     <hr /> 
    </SeparatorTemplate> 
</asp:DataList> 

お知らせまた、asp:DataListタグにOnItemCommandを追加しました。これで、予定通りにイベントを発生させることができます。

しかし、ブラウザの結果は私が期待するものではありません。 強いテキストに記載されている名前とユーザー名がうまく表示されますが、LinkBut​​tonコントロール内の余分な詳細(社員コードフィールド)を示すべきであるLiteralコントロールと[名前]フィールドには、ページ内にその値を表示しません。

not showing as expected http://lh6.ggpht.com/_x84bQLYH57A/SgxzygartcI/AAAAAAAAAIY/nhT-6RUJa6o/s144/EmployeeDirectory_notshowing.jpgそして「ザックRuvalcabaについて見る詳細」

だから私はそれが別のコントロールの内部で、誰もが私を助けることができたときに動作していないのeval関数だと思う:

それは、「1社員は」言うべき?

ありがとうございます!

答えて

3

変更するLinkBut​​tonとして:私はパラメータの順序を混同

<asp:LinkButton ID="detailsButton" runat="server" 
    Text='<%# Eval("Name", "View more details about {0}") %>' 
    CommandName="MoreDetailsPlease" 
    CommandArgument='<%# Eval("EmployeeID") %>' /> 
申し訳

。私は自分の答えを更新しました。書式は2番目のパラメータでなければなりません。

+0

このソリューションでは、アプリケーションがクラッシュし、DataBindingというエラーが発生します。「System.Data.Common.DataRecordInternal」に「{0}の詳細を表示」という名前のプロパティが含まれていません。 もう一度見ていただけますか?私はこれがかなり優雅に見えるので、これを行う方法であることを願っています。 :) – tplive

+0

CommandArgument ..にある欠落した#を見つけ出すための半分のポイント – tplive

+0

私はあなたの更新された解決策にIMHOの答えを与えています。しかしTheTXIにも面白いテイクがありますので、私は彼を怒らせました。私がこれを正しくやっていることを願って、私はまったく新しいです!あなたの返信のためにおかげでみんな! – tplive

1

あなたは、私がここに不気味似たようなに関する昨日掲示別の質問を表示することができます

Need help with Eval inside DataList

私はCanavarは実際にしかし、正しい答えを与えたと考えていますが。

+0

あなたのリンクは面白かったですが、私はEvalからの返品がObjectでしたが、私のソリューションを適用したときには Text = '<%# "" Eval( "Name")の詳細を表示ToString()+ ""%>'それは魅力的です! – tplive

+0

tplive:もし私が助けてくれたら、私に投票してもらえますか? – TheTXI

関連する問題