2012-07-26 100 views
0

我有一个DropDownList的数据绑定到我们的SQL服务器与ID,名,姓。然后我添加了一个GridView和配置的数据源到这个DropDownList与GridView ASP.NET

SELECT [ID],[FNAME],[L-NAME] FROM [CB1] WHERE([ID] = @ID)

基本上我想要它做的是当有人从下拉列表中选择第一个名字时,它会弹出在GridView中的ID,名字和姓氏。

问题是,当它加载DropDownList是空的,没有数据,并且GridView也丢失。

这是标记。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
     DataKeyNames="ID" DataSourceID="SqlDataSource1" 
     EmptyDataText="There are no data records to display."> 
     <Columns> 
      <asp:CommandField ShowEditButton="True" ShowSelectButton="True" /> 
      <asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True" 
       SortExpression="ID" /> 
      <asp:BoundField DataField="fName" HeaderText="fName" SortExpression="fName" /> 
      <asp:BoundField DataField="lName" HeaderText="lName" SortExpression="lName" /> 
     </Columns> 
    </asp:GridView> 
    <asp:DropDownList ID="DropDownList1" runat="server" 
     DataSourceID="SqlDataSource1" DataTextField="ID" DataValueField="ID"> 
    </asp:DropDownList> 
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConnectionString="<%$ ConnectionStrings:comboConnectionString1 %>" 
     DeleteCommand="DELETE FROM [cb1] WHERE [ID] = @ID" 
     InsertCommand="INSERT INTO [cb1] ([fName], [lName]) VALUES (@fName, @lName)" 
     ProviderName="<%$ ConnectionStrings:comboConnectionString1.ProviderName %>" 
     SelectCommand="SELECT [ID], [fName], [lName] FROM [cb1] WHERE ([ID] = @ID)" 
     UpdateCommand="UPDATE [cb1] SET [fName] = @fName, [lName] = @lName WHERE [ID] = @ID"> 
     <DeleteParameters> 
      <asp:Parameter Name="ID" Type="Int32" /> 
     </DeleteParameters> 
     <InsertParameters> 
      <asp:Parameter Name="fName" Type="String" /> 
      <asp:Parameter Name="lName" Type="String" /> 
     </InsertParameters> 
     <SelectParameters> 
      <asp:ControlParameter ControlID="DropDownList1" Name="ID" 
       PropertyName="SelectedValue" Type="Int32" /> 
     </SelectParameters> 
     <UpdateParameters> 
      <asp:Parameter Name="fName" Type="String" /> 
      <asp:Parameter Name="lName" Type="String" /> 
      <asp:Parameter Name="ID" Type="Int32" /> 
     </UpdateParameters> 
    </asp:SqlDataSource> 
</p> 
+0

问题是什么?代码在哪里? – banging 2012-07-26 17:54:38

+0

你可以分享代码plz后面的示例代码吗? – 2012-07-26 18:04:43

回答

1
Table Contains id,Name,department and age 


Department : 
     <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" 
      DataSourceID="SqlDataSource2" DataTextField="Department" 
      DataValueField="Department"> 
     </asp:DropDownList> 
     <br /> 
     <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
      ConnectionString="<%$ ConnectionStrings:demoConnectionString %>" 
      SelectCommand="SELECT DISTINCT [Department] FROM [profile]"> 
     </asp:SqlDataSource> 
     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
      DataKeyNames="id" DataSourceID="SqlDataSource3"> 
      <Columns> 
       <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" 
        ReadOnly="True" SortExpression="id" /> 
       <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" /> 
       <asp:BoundField DataField="Department" HeaderText="Department" 
        SortExpression="Department" /> 
       <asp:BoundField DataField="Age" HeaderText="Age" SortExpression="Age" /> 
      </Columns> 
     </asp:GridView> 
     <asp:SqlDataSource ID="SqlDataSource3" runat="server" 
      ConnectionString="<%$ ConnectionStrings:demoConnectionString %>" 
      SelectCommand="SELECT * FROM [profile] WHERE ([Department] = @Department)"> 
      <SelectParameters> 
       <asp:ControlParameter ControlID="DropDownList1" Name="Department" 
        PropertyName="SelectedValue" Type="String" /> 
      </SelectParameters> 
     </asp:SqlDataSource> 

Result: 
![Result][1] 


    [1]: http://i.stack.imgur.com/WrfP7.png 
1

的问题是,当它加载的DropDownList是空的,没有 数据,并在GridView也不翼而飞。

当你的网页第一次加载它触发该SQL查询(SELECT [ID], [fName], [lName] FROM [cb1] WHERE ([ID] = @ID)返回结果所使用由电网和组合

意味着没有结果返回,因为@ID将为空或0 sqldatasource1

所以,你将有(SELECT [ID], [fName], [lName] FROM [cb1] WHERE ([ID] = @ID OR [ID] IS NOT NULL)

+0

@RGI我的回答是基于OP显示的代码 – HatSoft 2012-07-26 18:09:08

+0

@WaqarJanjua你绝对正确我会很高兴地upvote你,如果你想把你的建议作为回答 – HatSoft 2012-07-26 18:20:25

+0

因为ID是一个主键。它会让我使用解析ID IS NOT NULL? – vadim 2012-07-26 19:43:12