2009-11-15 5 views
0

mon code gota datalist avec le bouton radio et iv a rendu unique au choix OnItemDataBound .... maintenant im essayant d'évaluer un HiddenField sur la base du bouton radio sélectionnéID Eval sur RadioButton dans Datalist

mon code va comme ceci

code ASPX

<asp:DataList ID="DataList1" runat="server" RepeatColumns = "4" CssClass="datalist1" 
       RepeatLayout = "Table" OnItemDataBound="SOMENAMEItemBound" 
       CellSpacing="20" onselectedindexchanged="DataList1_SelectedIndexChanged"> 
       <ItemTemplate> 
       <br /> 
       <table cellpadding = "5px" cellspacing = "0" class="dlTable"> 
       <tr> 
       <td align="center"> 
       <a href="<%#Eval("FilePath")%>" target="_blank"><asp:Image ID="Image1" runat="server" CssClass="imu" ImageUrl = '<%# Eval("FilePath")%>' 
       Width = "100px" Height = "100px" style ="cursor:pointer" /> 
       </td>    
       </tr> 
       <tr > 
       <td align="center">      
       <asp:RadioButton ID="rdb" runat="server" OnCheckedChanged="rdb_click" AutoPostBack="True" />    
       <asp:HiddenField ID="HiddenField1" runat="server" Value = '<%#Eval("ID")%>' /> 
       </td> 
       </tr>      
       </table> 

</ItemTemplate> 
</asp:DataList> 
code

derrière

protected void SOMENAMEItemBound(object sender, DataListItemEventArgs e) 
     { 
      RadioButton rdb; 
      rdb = (RadioButton)e.Item.FindControl("rdb"); 
      if (rdb != null) 
       rdb.Attributes.Add("onclick", "CheckOnes(this);"); 



     } 

    protected void rdb_click(object sender, EventArgs e) 
     { 
      for (int i = 0; i < DataList1.Items.Count; i++) 
      { 
       RadioButton rdb; 
       rdb = (RadioButton)DataList1.Items[i].FindControl("rdb"); 
       if (rdb != null) 
       { 
        if (rdb.Checked) 
        { 
         HiddenField hf = (HiddenField)DataList1.Items[i].FindControl("HiddenField1"); 
         Response.Write(hf.Value); 
        } 

       } 
      } 
     } 

les im en utilisant JavaScript ...

function CheckOnes(spanChk){ 


var oItem = spanChk.children; 
var theBox= (spanChk.type=="radio") ? 
spanChk : spanChk.children.item[0]; 

xState=theBox.unchecked; 
elm=theBox.form.elements; 

for(i=0;i<elm.length;i++) 
if(elm[i].type=="radio" && 
elm[i].id!=theBox.id) 
{ 
elm[i].checked=xState; 
} 
} 

iam devient une erreur comme celle

Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled. 
Details: Error parsing near 'pload Demonstration|'. 

est-il une autre façon de le faire ou peut uiconque plz aider à se débarrasser de ce problème

Répondre

0

Le problème est probablement votre appel Response.Write(). Jetez un oeil à this blog post. Il explique les raisons pour lesquelles cette exception particulière apparaît et comment l'éviter. Jetez également un coup d'oeil à this StackOverflow thread.

0

Okey permet de supprimer il suffit d'écrire la réponse ... maintenant je l'ai suivre dans mes codebehind ... reste est le même

label5.text=hf.value.ToString(); 

maintenant je suis en mesure d'évaluer l'étiquette quand j'utiliser le panneau de mise à jour e UpdatePanel imbriqué comme celui-ci

<asp:UpdatePanel ID="UpdatePanel9" runat="server" > 
       <ContentTemplate> 

       <asp:DataList ID="DataList1" runat="server" RepeatColumns = "4" 
         CssClass="datalist1" OnItemDataBound="SOMENAMEItemBound" 
       CellSpacing="10" onselectedindexchanged="DataList1_SelectedIndexChanged" 
         HorizontalAlign="Center" Width="500px"> 
       <ItemTemplate> 
       <br /> 
       <table cellpadding = "5px" cellspacing = "0" class="dlTable"> 
       <tr> 
       <td align="center"> 
       <a href="<%#Eval("FilePath")%>" target="_blank"><asp:Image ID="Image1" runat="server" CssClass="imu" ImageUrl = '<%# Eval("FilePath")%>' 
       Width = "100px" Height = "100px" style ="cursor:pointer" /> 
       </td>    
       </tr> 
       <tr > 
       <td align="center"> 
        <asp:UpdatePanel ID="UpdatePanel3" runat="server"> 
        <Triggers> 
        <asp:PostBackTrigger ControlID="rdb" /> 
        </Triggers> 
          <ContentTemplate>   
       <asp:RadioButton ID="rdb" runat="server" OnCheckedChanged="rdb_click" AutoPostBack="true" /> 

       </ContentTemplate> 
       </asp:UpdatePanel> 

       <asp:HiddenField ID="HiddenField1" runat="server" Value = '<%#Eval("ID")%>' /> 
       </td> 
       </tr>      
       </table> 

</ItemTemplate> 

</asp:DataList> 


     </ContentTemplate> 
     </asp:UpdatePanel> 

est-il un moyen de pour y parvenir sans postback pleine page .... déclencheur asyncpostback ne marche pas semble fonctionner