2011-07-12 4 views
2

リピータには、リンクボタンをクリックするまで表示されないユーザコントロールに渡すIDを含むデータがリストされています。しかし、私がリンクボタンをクリックすると、IDは失われています。リピータ内のユーザコントロールにパラメータを渡す

誰かが間違っていると思いますか?ここで

はリピーターのためのコードです:

<asp:Repeater ID="uxPolicyList" runat="server" onitemdatabound="uxPolicyList_ItemDataBound"> 
     <ItemTemplate> 
        <tr> 
         <td class="smaller-ctrl"> 
          <img src="Assets/Images/home-icon.gif" alt="Home Insurance Policy" /><%#Eval("PolicyNumber")%> 
         </td> 
         <td> 
          <%#Eval("StartDate","{0:d}")%> 
         </td> 
         <td class="center-cell-ctrl"> 
          <%#Eval("Renewal", "{0:d}")%> 
         </td> 
         <td class="center-cell-ctrl"> 
          Postcode:<br /> 
          <%#Eval("Postcode")%> 
         </td> 
         <td id='<%#Eval("PolicyNumber")%>' class="button-cell"> 
          <asp:LinkButton ID="uxPolicySummaryButton" CssClass="policy-link-ctrl" CommandName="PolicyNumber" CommandArgument='<%#Eval("PolicyNumber")%>' OnCommand="uxPolicySummaryButton_Command" runat="server">Policy summary<br /></asp:LinkButton> 

         </td> 
        </tr> 
        <uc1:PolicySummary ID="uxPolicySummary" PolicyNumber='<%#Eval("PolicyNumber")%>' runat="server" Visible="false" /> 
     </ItemTemplate> 

私はこれらがユーザーコントロールのコードビハインドでget/setアクセッサが、彼らは常に空白だ持っている:

public string _policyNumber = string.Empty; 

    public string PolicyNumber 
    { 
     get 
     { 
      return _policyNumber; 
     } 
     set 
     { 
      _policyNumber = value; 
     } 
    } 

テストする場合、私はハードにユーザーコントロールの値をコード化しました。すなわち

<uc1:PolicySummary ID="uxPolicySummary" PolicyNumber="545545-5454-54545" runat="server" Visible="false" /> 

...うまくいきました。すべてのアイデアはCommandArgument

の値でOnCommandイベント内

を編集]をPolicyNumberプロパティの値を再割り当てしたり、コントロール内HiddenFieldにそれを保存する

答えて

2

試みを高く評価し

public string PolicyNumber 
{ 
    get 
    { 
     return MyHiddenField.Value; 
    } 
    set 
    { 
     MyHiddenField.Value = value; 
    } 
} 
+0

こんにちは - 私は実際にそれを行います。私はセッション変数として設定しようとしましたが、ページのライフサイクルのために、コントロールがロードされた後に起こるようです。したがって、policyNumberを使用してロードされないため、空白です。 –

+0

'HiddenField 'あなたのコントロールの中で私の編集を確認してください –

+0

ありがとう非常に - 隠されたフィールドメソッドは私のために働いた。 –

1

私は思いますViewStateバッキングストアが不足している可能性があります。

public string PolicyNumber  
{   
    get   {    return ViewState["policyNumber"] as string;   }   
    set   {    ViewState["policyNumber"] = value;   }  
} 
+0

残念ながら効果はありませんでした。リピーターのリンクボタンをクリックするとviewstateの値を設定する必要がありますが、下のマイクロプロセッサーの回答では、コントロールがロードされた後にonClickまたはonCommandイベントが発生するようです空のまま –

+0

OM * G!最後に私のsh * tの仕事をしました....ありがとう! – JoRouss

+0

しかし、それは最初のページの読み込みでdoens't do :( – JoRouss