2011-12-21 20 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