2011-07-12 53 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> 

我有这些获得用户控件/ 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" /> 

...它工作得很好。任何想法表示赞赏

回答

2

尝试重新分配PolicyNumber财产的价值内OnCommand事件与CommandArgument

值编辑

或将其保存到HiddenField你的控制中

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值,当我点击中继器中的linkbutton,但正如我在下面的微处理器答案中所说,onClick或onCommand事件似乎发生在控件加载后为空 –

+0

OM * G!终于让我的工作....谢谢! – JoRouss

+0

但它不工作在第一页加载:( – JoRouss

相关问题