2011-12-21 19 views
1

問題是如上。 我有一個父網格視圖,將通過接受查詢字符串填充。然而,子網格視圖(嵌套)然後將不會被填充。我不明白爲什麼。 有幫助嗎?嵌套gridview沒有數據,如果父Gridview得到填充(其中= querystring)需要幫助在這裏

<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

您可以添加到HiddenField的GridView1一個ItemTemplate並與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,所以我沒有把它作爲hiddenfield。 –

+0

它給了我這個錯誤:DataBinding:'System.Web.UI.WebControls.GridView'不包含名稱爲'Value'的屬性。 –

+0

@MarlinusYapi - 您必須重新配置這兩個數據源控件。 – adatapost