Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何让这个DropDownList(过滤器)在这个GridView中再次工作?_C#_Asp.net - Fatal编程技术网

C# 如何让这个DropDownList(过滤器)在这个GridView中再次工作?

C# 如何让这个DropDownList(过滤器)在这个GridView中再次工作?,c#,asp.net,C#,Asp.net,我正在开发一个intranet web应用程序,它可以作为建议框使用。管理员将在GridView中看到所有提交建议的列表,他可以通过添加到GridView的DropDownList接受或拒绝这些建议。除此之外,此GridView顶部还有一个下拉列表,用于根据提交其中一个建议的用户的划分筛选建议 此外,在此GridView下,还有另一个GridView,显示状态为已接受或已拒绝的建议。每次管理员接受或拒绝其中一个建议后,都会立即刷新此GridView。此外,管理员还可以打印此GridView 在U

我正在开发一个intranet web应用程序,它可以作为建议框使用。管理员将在GridView中看到所有提交建议的列表,他可以通过添加到GridView的DropDownList接受或拒绝这些建议。除此之外,此GridView顶部还有一个下拉列表,用于根据提交其中一个建议的用户的划分筛选建议

此外,在此GridView下,还有另一个GridView,显示状态为已接受或已拒绝的建议。每次管理员接受或拒绝其中一个建议后,都会立即刷新此GridView。此外,管理员还可以打印此GridView

在UpdatePanel控件中添加第二个GridView之前,一切正常,但是现在过滤第一个GridView中建议的过滤器不起作用。有什么想法吗?有什么帮助吗?

我的ASP.NET代码:

<strong> Division </strong>
    <asp:DropDownList ID="ddlDivision" runat="server" AppendDataBoundItems="True" 
        AutoPostBack="True" DataSourceID="sqlDataSourceDivision" DataTextField="DivisionShortcut" 
        DataValueField="DivisionShortcut"  
        Width="175px" EnableViewState="False">
        <asp:ListItem Value="%">All</asp:ListItem>
    </asp:DropDownList>


    <br />  <br />  

        <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
                        AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="ID" 
                        width="950px" CssClass="mGrid"
                        AlternatingRowStyle-CssClass="alt" 
                        RowStyle-HorizontalAlign="Center" 
                        DataSourceID="SqlDataSource1" 
                        OnRowDataBound="GridView1_RowDataBound" >
            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
            <HeaderStyle Font-Bold = "true" ForeColor="Black" Height="20px"/> 
            <Columns>
                <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" 
                    ReadOnly="True" SortExpression="ID" />
                <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
                <asp:BoundField DataField="Description" HeaderText="Description" 
                    SortExpression="Description" />
                <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
                <asp:BoundField DataField="Username" HeaderText="Username" 
                    SortExpression="Username" />
                <asp:BoundField DataField="DivisionShortcut" HeaderText="Division" 
                    SortExpression="DivisionShortcut" />
                <asp:TemplateField HeaderText="Status">
                    <ItemTemplate>
                        <asp:DropDownList ID="DropDownList" runat="server" DataSourceID="SqlDataSource2"
                                          Font-Bold="True" ForeColor="#006666" AppendDataBoundItems="false" 
                                          DataTextField="Status" DataValueField="ID" AutoPostBack="true" 
                                          OnDataBound="DropDownList_DataBound" OnSelectedIndexChanged ="DropDownList_SelectedIndexChanged">
                        </asp:DropDownList>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:testConnectionString %>" 
            SelectCommand="SELECT     dbo.SafetySuggestionsLog.ID, dbo.SafetySuggestionsLog.Title, dbo.SafetySuggestionsLog.Description, dbo.employee.Name, dbo.SafetySuggestionsLog.Username, 
                      dbo.Divisions.DivisionShortcut
FROM         dbo.employee INNER JOIN
                      dbo.SafetySuggestionsLog ON dbo.employee.Username = dbo.SafetySuggestionsLog.Username INNER JOIN
                      dbo.Divisions ON dbo.employee.DivisionCode = dbo.Divisions.SapCode"
                      FilterExpression="[DivisionShortcut] like '{0}%'">

                      <FilterParameters>
                        <asp:ControlParameter ControlID="ddlDivision" Name="DivisionShortcut" 
                                                 PropertyName="SelectedValue" Type="String" />
                    </FilterParameters>
        </asp:SqlDataSource>

        <%--For the DropDownList--%>
        <asp:SqlDataSource ID="SqlDataSource2" runat="server"
                            ConnectionString="<%$ ConnectionStrings:testConnectionString %>" 
                            SelectCommand="SELECT * FROM [SafetySuggestionsStatus]">
        </asp:SqlDataSource>

        <%--Filtering by Division--%>
        <asp:SqlDataSource ID="sqlDataSourceDivision" runat="server" 
        ConnectionString="<%$ ConnectionStrings:testConnectionString %>" 
        SelectCommand="SELECT [DivisionShortcut] FROM [Divisions]"></asp:SqlDataSource>

        <asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="ddlDivision" EventName="SelectedIndexChanged" />
    </Triggers>
    <ContentTemplate>
            <br />

                <p><h3><b><u>PMOD Divisions' Safety Suggestions List</u></b></h3>
                    <p>
                    </p>
                    <br />
                    <asp:Panel ID="Panel1" runat="server">
                        <asp:GridView ID="GridView2" runat="server" AllowSorting="True" 
                            AlternatingRowStyle-CssClass="alt" AutoGenerateColumns="False" CssClass="mGrid" 
                            DataSourceID="SqlDataSource4" RowStyle-HorizontalAlign="Center">
                            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                            <HeaderStyle Font-Bold="true" ForeColor="Black" Height="20px" />
                            <Columns>
                                <asp:BoundField DataField="SubmittedMonth" HeaderText="Month Submitted" 
                                    ReadOnly="True" SortExpression="SubmittedMonth" />
                                <asp:BoundField DataField="DivisionShortcut" HeaderText="Division" 
                                    SortExpression="DivisionShortcut" />
                                <asp:BoundField DataField="Username" HeaderText="NetworkID" 
                                    SortExpression="Username" />
                                <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
                                <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
                                <asp:BoundField DataField="Description" HeaderText="Description" 
                                    SortExpression="Description" />
                                <asp:BoundField DataField="Type" HeaderText="Type" SortExpression="Type" />
                                <asp:BoundField DataField="Status" HeaderText="Status" 
                                    SortExpression="Status" />
                            </Columns>
                            <RowStyle HorizontalAlign="Center" />
                        </asp:GridView>
                    </asp:Panel>
                    <asp:SqlDataSource ID="SqlDataSource4" runat="server" 
                        ConnectionString="<%$ ConnectionStrings:testConnectionString %>" SelectCommand="SELECT     TOP (100) PERCENT LEFT(DATENAME(month, dbo.SafetySuggestionsLog.DateSubmitted), 3) + '-' + DATENAME(year, dbo.SafetySuggestionsLog.DateSubmitted) 
                      AS SubmittedMonth, dbo.Divisions.DivisionShortcut, dbo.SafetySuggestionsLog.Username, dbo.employee.Name, dbo.SafetySuggestionsLog.Title, 
                      dbo.SafetySuggestionsLog.Description, dbo.SafetySuggestionsType.Type, dbo.SafetySuggestionsStatus.Status
FROM         dbo.Divisions INNER JOIN
                      dbo.employee ON dbo.Divisions.SapCode = dbo.employee.DivisionCode INNER JOIN
                      dbo.SafetySuggestionsLog ON dbo.employee.Username = dbo.SafetySuggestionsLog.Username INNER JOIN
                      dbo.SafetySuggestionsType ON dbo.SafetySuggestionsLog.TypeID = dbo.SafetySuggestionsType.ID INNER JOIN
                      dbo.SafetySuggestionsStatus ON dbo.SafetySuggestionsLog.StatusID = dbo.SafetySuggestionsStatus.ID
WHERE     (DATEDIFF(month, dbo.SafetySuggestionsLog.DateSubmitted, GETDATE()) &lt; 3)
ORDER BY dbo.SafetySuggestionsLog.DateSubmitted DESC"></asp:SqlDataSource>
                    <asp:Button ID="btnPrint" runat="server" OnClick="btnPrint_Click" 
                        Text="Print" />
                    <p>
                    </p>
            </p>    


       </ContentTemplate>
    </asp:UpdatePanel>
  • 能否指定第一个网格的id
  • 我能想到的是,可能您没有在selectedIndex更改事件上手动更新updatepanel

    using (SqlConnection conn = new SqlConnection(connString))
    {
          using (SqlCommand cmd = new SqlCommand(updateCommand, conn))
          {
              cmd.Parameters.Clear();
              cmd.Parameters.AddWithValue("@StatusID", suggestionStatus);
              cmd.Parameters.AddWithValue("@ID", ID);
              conn.Open(); 
              cmd.ExecuteNonQuery();
          }
         conn.Close();
    }
       GridView2.DataBind();
       UpdatePanel1.Update();
    
  • 也在您的aspx集合中UpdateMode=“Conditional”

    
    
    不要在单独的gridview中显示建议,为什么不在同一个gridview中显示建议?因为管理员希望打印过去三个月的建议。除此之外,他不希望看到表中负责更新建议状态的DropDownList。感谢您的帮助,但我的问题是:第一个GridView上方有一个DropDownList,用于根据用户的划分过滤建议。在将第二个GridView放入UpdatePanel控件之后,这个DropDownList不再工作了,我不知道为什么,也不知道这两者之间有什么关系。有什么想法吗?
    using (SqlConnection conn = new SqlConnection(connString))
    {
          using (SqlCommand cmd = new SqlCommand(updateCommand, conn))
          {
              cmd.Parameters.Clear();
              cmd.Parameters.AddWithValue("@StatusID", suggestionStatus);
              cmd.Parameters.AddWithValue("@ID", ID);
              conn.Open(); 
              cmd.ExecuteNonQuery();
          }
         conn.Close();
    }
       GridView2.DataBind();
       UpdatePanel1.Update();
    
     <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">