2012-03-22 8 views
0

私は、自分のグリッドには、ラジオボタンリスト1〜10の選択肢を持つ名前のリストを含む「サーベイのような」プロジェクトがあります。グリッドは、すべての質問に対してわずか1のページサイズを持っています。次のページに移動した後にradiobuttonlistなどのページインデックス情報を保持する方法は?

どのようにナビゲートして結果を選択することができますか?私は長い間研究してきました。セッションやいくつかのクエリ文字列を使っている人もいます。より多くの私が実際に何を望んで詳しく説明するには、このリンクを見てみてください。http://www.aspsnippets.com/Articles/Preserving-state-of-Checkboxes-while-paging-in-ASP.Net-GridView-Control.aspx

は私が上記プロジェクトでRadioButtonListのようにチェックボックスを想像して助けてください。私は緊急に返信が必要です、私を助けてください。

mycode:

protected void SubmitAppraisalGrid_PageIndexChanging(object sender, GridViewPageEventArgs e) 
    { 
     SubmitAppraisalGrid.PageIndex = e.NewPageIndex; 
     ArrayList list = FindValues(this.Page); 

     DataTable dt = (DataTable)ViewState["QuestionTable"]; 
     SubmitAppraisalGrid.DataSource = dt; 
     SubmitAppraisalGrid.DataBind(); 
    } 

がデザイン:

<asp:GridView ID="SubmitAppraisalGrid" runat="server" AllowPaging="True" 
     AutoGenerateColumns="False" BorderWidth="0px" 
     OnPageIndexChanging="SubmitAppraisalGrid_PageIndexChanging" 
     onrowcreated="SubmitAppraisalGrid_RowCreated" PageSize="1" ShowHeader="False" 
     style="margin-right: 0px"> 
     <Columns> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <asp:Label ID="QuestionLbl" runat="server" Text='<%# Bind("Question")%>'></asp:Label> 
          <br /> 
          <br /> 
          <asp:GridView ID="StaffAppraisalGrid" runat="server" 
         AutoGenerateColumns="False" BorderWidth="0px" CellPadding="4" CellSpacing="2" 
         GridLines="Horizontal"> 
           <Columns> 
            <asp:BoundField DataField="StaffName" HeaderText="Name"> 
            <HeaderStyle HorizontalAlign="Left" /> 
            </asp:BoundField> 
            <asp:TemplateField HeaderText="Rate"> 
             <ItemTemplate> 
              <asp:RadioButtonList ID="RadioList" runat="server" CellPadding="8" 
               DataSource='<%# Bind("RadioButtonList")%>' RepeatDirection="Horizontal"> 
              </asp:RadioButtonList> 
             </ItemTemplate> 
             <HeaderStyle HorizontalAlign="Left" /> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="Remarks"> 
             <ItemTemplate> 
              <asp:TextBox ID="RemarksTbx" runat="server" CssClass="remarkTbx" 
               onKeyDown="limitText(this,500);" onkeypress="return check(event)" 
               onKeyUp="limitText(this,500);" onMouseDown="return DisableControlKey(event)" 
               Text='<%# Bind("RemarkTbx")%>' TextMode="MultiLine"></asp:TextBox> 
             </ItemTemplate> 
             <HeaderStyle HorizontalAlign="Left" /> 
            </asp:TemplateField> 
           </Columns> 
        </asp:GridView> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
     <PagerStyle HorizontalAlign="Center" /> 
    </asp:GridView> 

答えて

0

私はあなたが説明するように( "QuestionTable")が動作するセッションを使用して、ユーザーがページに戻って移動することが可能と表示されます考えます彼らが選んだもの新しいページに移動する前に、ポストバックを使って選択した内容で更新するだけで済みます。

PageLoad(またはボタンクリックイベント)では、ラジオボタンから値を取得し、QuestionTableを更新してセッションメモリに入れます。

Session("QuestionTable") = dt 
関連する問題