2012-01-28 13 views
1

Repeater Controlの内部にあるLinkBut​​tonを作成しました。 CategoryIDはLinkBut​​ton Controlの変数で、Repeater Controlがデータにバインドされた後に値を取得する必要があります。しかし、CategoryIDは常にゼロになります。なぜLink Buttonコントロール変数に値が得られないのですか?

I以下のASPとC#のコードを持っている:背後

<asp:Repeater ID="rpt1" runat="server" 
      OnItemDataBound="rpt1_ItemDataBound" 
      OnItemCommand="rpt1_ItemCommand">  
    <ItemTemplate> 
     <div> 
     <%# Eval("Name") %>-<%# Eval("CollectionType")%> 
     <asp:LinkButton ID="LinkButton1" runat="server" Text="[edit item]" 
      PostBackUrl='AddItem.aspx?CategoryID=<%# Eval("CollectionID")%>' /> 
     </div>  
    </ItemTemplate> 
</asp:Repeater> 

コード:

public void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     List<GlassesCollection> gc = BL.GetDataBL.GetCollection(); 
     rpt1.DataSource = gc; 
     rpt1.DataBind(); 
    } 
} 

区分変数は、任意の値を取得していないとどのように私は問題を解決することができる理由の任意のアイデア?

+2

のようなあなたのパラメータを変更する必要が

は 'GlassesCollection'オブジェクトが定義された' CollectionID'プロパティを持っていますか?それは常に設定されていますか? – Oded

+0

htmlページで何が表示されますか(ここに入力してください)? – Aristos

+0

Oded、GlassesCollectionオブジェクトで定義されているCollectionIDプロパティ。 – Michael

答えて

1

サーバー制御パラメータには、リテラルテキストと評価式が混在することはできません。 あなたが持っているコードは、文字通りAddItem.aspx?カテゴリID = <%#Eval( "CollectionID")%>にポストバックされ、山括弧内のコードは評価されません。あなたはとても

PostBackUrl='<%# "AddItem.aspx?CategoryID=" + Eval("CollectionID")%>' /> 
関連する問題