2009-11-15 4 views
0

мой код Гота DataList с радио-кнопки и IV сделал одиночный выбор onitemdatabound .... теперь им пытаются оценить на основе скрытых полей выбранной радиокнопкиEval ID на радиокнопки в DataList

мой код выглядит следующим образом

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> 

код за

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); 
        } 

       } 
      } 
     } 

в 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; 
} 
} 

РМКО получаю сообщение об ошибке, как этот

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|'. 

есть ли другой способ сделать это, или может nyone плз помочь избавиться от этой проблемы

ответ

0

Проблема, вероятно, в вызове Response.Write(). Взгляните на this blog post. В нем излагаются причины возникновения этого конкретного исключения и способы его предотвращения. Также взгляните на this StackOverflow thread.

0

Окей позволяет просто удалить запись ответа ... теперь я следующий в моем коде ... остальное же

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

Теперь я могу оценить метку, когда я использую обновление панель й вложенную UpdatePanel, как это

<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> 

есть способ, чтобы это было сделано без полного постбэка .... asyncpostback триггер не кажется работать