2011-12-21 8 views
1

質問は上記と同じです。 親グリッドビューがあり、クエリ文字列を取り込むことでデータが取り込まれます。 ただし、子グリッドビュー(ネストされた)には値が設定されません。私はなぜあまりにも理解していない。 助けてください?ネストされたグリッドビューデータがない場合、親グリッドビューにデータが入力されている場合は、ここで助けが必要です

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
     BorderColor="Black" BorderStyle="Solid" DataKeyNames="QuestionID" 
     DataSourceID="SqlDataSource1" Width="447px"> 
     <Columns> 
      <asp:BoundField DataField="QuestionID" HeaderText="QuestionID" ReadOnly="True" 
       SortExpression="QuestionID" /> 
      <asp:BoundField DataField="SurveyID" HeaderText="SurveyID" 
       SortExpression="SurveyID" /> 
      <asp:BoundField DataField="QuestionTitle" HeaderText="QuestionTitle" 
       SortExpression="QuestionTitle" /> 
      <asp:BoundField DataField="AnswerType" HeaderText="AnswerType" 
       SortExpression="AnswerType" /> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" 
         BorderStyle="Solid" DataSourceID="SqlDataSource2"> 
         <Columns> 
          <asp:BoundField DataField="AnswerValue" HeaderText="AnswerValue" 
           SortExpression="AnswerValue" /> 
         </Columns> 
        </asp:GridView> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConnectionString="<%$ ConnectionStrings:myConnectionString %>" 
     SelectCommand="SELECT * FROM [Question] WHERE ([SurveyID] = @SurveyID)"> 
     <SelectParameters> 
      <asp:QueryStringParameter Name="SurveyID" QueryStringField="sid" 
       Type="String" /> 
     </SelectParameters> 
    </asp:SqlDataSource> 

    </div> 

      <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
       ConnectionString="<%$ ConnectionStrings:myConnectionString %>" 


    SelectCommand="SELECT AnswerValue FROM Results WHERE (QuestionID = @QuestionID)"> 
       <SelectParameters> 
        <asp:Parameter Name="QuestionID" /> 
       </SelectParameters> 
      </asp:SqlDataSource> 

答えて

0

あなたはGridView1のItemTemplateににHiddenFieldを追加し、QuestionIDとそれを結合することができます。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    ... 
    <asp:TemplateField> 
     <ItemTemplate> 
     <asp:HiddenField ID="HiddenField1" runat="server" 
          Value='<%# Eval("QuestionID") %>' /> 
      <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" 
       BorderStyle="Solid" DataSourceID="SqlDataSource2"> 
       <Columns> 
        <asp:BoundField DataField="AnswerValue" HeaderText="AnswerValue" 
        SortExpression="AnswerValue" /> 
       </Columns> 
      </asp:GridView> 
     </ItemTemplate> 
    </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

ControlParameterを使用してQuestionIDとSqlDataSource2を比較します。

<asp:SqlDataSource ID="SqlDataSource2" runat="server" 
       ConnectionString="<%$ ConnectionStrings:myConnectionString %>" 
    SelectCommand="SELECT AnswerValue FROM Results WHERE (QuestionID = @QuestionID)"> 
    <SelectParameters> 
     <asp:ControlParameter ControlID="HiddenField1" Name="QuestionID" 
            PropertyName="Value" Type="Int32" /> 
    </SelectParameters> 
</asp:SqlDataSource> 
+0

私はQuestionIDを表示していますので、私はそれを隠しフィールドにしてはいけません。 –

+0

それは私にこのエラーを与えます:DataBinding: 'System.Web.UI.WebControls.GridView'は 'Value'という名前のプロパティを含んでいません。 –

+0

@MarlinusYapi - これらのデータソースコントロールの両方を再構成する必要があります。 – adatapost

関連する問題