为什么我无法在SqlDataSource_Selecting事件中访问gridview的HeaderTemplate中的控件?

时间:2017-06-14 06:47:04

标签: c# asp.net gridview

我有一个简单的gridview,其中一列名为“State”,而DropDownList在其标题中设置过滤器:

<asp:LoginView ID="LoginView1" runat="server">
    <AnonymousTemplate>
        Please Login
    </AnonymousTemplate>
    <LoggedInTemplate>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" DataKeyNames="AssetsID" OnRowDataBound="GridView1_RowDataBound">
            <Columns>
                <asp:BoundField DataField="AssetsID" HeaderText="AssetsID" SortExpression="AssetsID" />

                <asp:TemplateField HeaderText="State" SortExpression="State">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("State") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <HeaderTemplate>
                        <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True">
                            <asp:ListItem Selected="True">State</asp:ListItem>
                            <asp:ListItem>Not used</asp:ListItem>
                            <asp:ListItem>Using</asp:ListItem>
                        </asp:DropDownList>
                    </HeaderTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("State") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>

            </Columns>
        </asp:GridView>

        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Gzone %>" OnSelecting="SqlDataSource1_Selecting" SelectCommand="DisplayAssets2" SelectCommandType="StoredProcedure" >
            <SelectParameters>
                <asp:Parameter Name="UserID" Type="String" />
                <asp:Parameter Name="State" Type="String" />
            </SelectParameters>

        </asp:SqlDataSource>
    </LoggedInTemplate>

</asp:LoginView>

并在代码后面:

protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
    e.Command.Parameters["@UserID"].Value = this.User.Identity.Name;

        GridView g = (GridView)LoginView1.FindControl("GridView1");
        DropDownList d = (DropDownList)g.HeaderRow.FindControl("DropDownList1");
        string s = d.SelectedValue;
        e.Command.Parameters["@State"].Value = s;
}

但我不明白为什么我不能用这段代码访问DropDownList1,它的值为null。

由于 稻谷

0 个答案:

没有答案