将DropDownList选定值传递给Gridview数据源的问题

时间:2014-03-03 13:12:28

标签: asp.net c#-4.0 gridview webforms

我正在创建一个包含两个控件的网页 - 一个GridView和一个DropDownList。

DropDownList列表中填充了公司列表,并使用sql数据源(存储过程)。当用户登录时,他的用户名将作为参数传递给DropDownList的数据源,因此他只能看到他有权访问的公司。这工作正常,下面是DropDownList的HTML标记。

 <asp:DropDownList ID="ddlPortfolioCompanies" runat="server" Font-Names="tahoma" Font-Size="8pt" style="position: absolute; top: 50px; left: 735px; height: 18px;" AutoPostBack="True" DataSourceID="DropDownDataSource" DataTextField="Asset_Name" DataValueField="Asset_ID">            
        </asp:DropDownList>

        <asp:SqlDataSource ID="DropDownDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ReportsConnectionString %>" SelectCommand= "usp_Assets" SelectCommandType="StoredProcedure">            
            <SelectParameters>
                <asp:Parameter Name="User" Type="String" />
            </SelectParameters>
        </asp:SqlDataSource> 

我在页面加载后面的代码中设置DropDownList的默认值,如下所示

DropDownDataSource.SelectParameters["User"].DefaultValue = System.Web.HttpContext.Current.User.Identity.Name;

GridView还使用SQL数据源(存储过程),DropDownLIst中的“选定值”作为参数传递给GridView的数据源。

<asp:GridView ID="GridView1" runat="server" CssClass="gvclass" OnRowUpdating="GridView1_RowUpdating" 
        AutoGenerateColumns="False" DataKeyNames="ID" 
        DataSourceID="SqlDataSource1" onrowdatabound="GridView1_RowDataBound" OnRowCreated="GridView1_RowCreated" BackColor="White" BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px" CellPadding="4" 
          ForeColor="Black" GridLines="None" Width="65" Height="16px">
          <AlternatingRowStyle BackColor="#F7F7DE" />

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ReportsConnectionString %>" 
        SelectCommand="EXEC [Portfolio].[dbo].usp_SELECT @ID" 

        <selectparameters>
              <asp:controlparameter name="ID" controlid="ddlPortfolioCompanies" propertyname="SelectedValue"/>
          </selectparameters>

问题:我正在测试这个,我可以访问两家公司(比如公司A和公司B)。我第一次登录时,DropDownList填充了公司A.但是,GridView控件没有填充并且为空。如果我将DropDownList的值从公司A更改为公司B,GridView将显示数据,如果我将值更改回公司A,则GridView将显示数据。我很难过,并且从昨天起就试图解决这个问题。

非常感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

您是否尝试在同一页面加载事件中设置其他控件参数的默认值?

之类的东西
user = System.Web.HttpContext.Current.User.Identity.Name;
conn = new SqlConnection(ConnectionStrings:NB-ReportsConnectionString);
conn.Open();
SqlCommand cmd = new SqlCommand(usp_Assets, conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("User", user);
companyID = cmd.ExecuteScalar();
con.Close();
SqlDataSource1.SelectParameters("ID").DefaultValue = companyID 

我很抱歉我的c#,我更多关于Visual Basic