views:

561

answers:

2

my code gota datalist with radio button and iv made it single selectable onitemdatabound....now im trying to evaluate a hiddenfield on basis of selected radio button

my code goes like this

aspx code

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

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

                }
            }
        }

the javascript im using...

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 getting an error like this

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

is there any other way to do this or can nyone plz help to get rid of this problem

A: 

The problem is probably your Response.Write() call. Take a look at this blog post. It outlines the reasons why this particular exception shows up, and how to prevent it. Also take a look at this StackOverflow thread.

Justin Grant
A: 

Okey lets just remove response write...now i have following in my codebehind...rest is same

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

now i am able to evaluate Label when i use update panel nd nested updatepanel like this

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

is there a way to to get this done without full page postback....asyncpostback trigger doesnt seem to work

ravi