2013-03-23 3 views
0

Я создал базу данных с именем Ztv.mdf, таблицу как tabl1 с [Name], [fullname], [Id], [dept] & также создал выпадающий список1 для dept.when значения dept, выбранные пользователем из выпадающего списка1, gridview показывает output.it работает отлично. Но я хочу, чтобы еще один раскрывающийся список для цели Name.my состоял в том, что когда пользователь выбирает значения из обоих выпадающего списка1 & выпадающий список2 это contol grid view.how я могу это сделать?Управление Gridview Основано на выборе более одного раскрывающегося списка

мой код 1 выпадающего списка & вид сетки является:

<form id="form1" runat="server"> 
<div> 
    <asp:DropDownList ID="ddlSearchCriteria" runat="server" 
     DataSourceID="SqlDataSource1" DataTextField="depat" DataValueField="Id" 
     AutoPostBack="True"> 
    </asp:DropDownList> 
    &nbsp;&nbsp; 
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConnectionString="<%$ ConnectionStrings:ztvConnectionString %>" 
     SelectCommand="SELECT [Id], [depat] FROM [Table1]"></asp:SqlDataSource> 
    <br /> 

    <asp:GridView ID="gvSearchResults" runat="server" AutoGenerateColumns="False" 
     DataKeyNames="Id" DataSourceID="SqlDataSource2" CellPadding="4" 
     ForeColor="#333333" GridLines="None" style="margin-left: 155px"> 
     <AlternatingRowStyle BackColor="White" /> 
     <Columns> 
      <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" /> 
      <asp:BoundField DataField="Id" HeaderText="Id" InsertVisible="False" 
       ReadOnly="True" SortExpression="Id" /> 
      <asp:BoundField DataField="fullname" HeaderText="fullname" 
       SortExpression="fullname" /> 
     </Columns> 
     <EditRowStyle BackColor="#2461BF" /> 
     <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
     <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
     <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> 
     <RowStyle BackColor="#EFF3FB" /> 
     <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> 
     <SortedAscendingCellStyle BackColor="#F5F7FB" /> 
     <SortedAscendingHeaderStyle BackColor="#6D95E1" /> 
     <SortedDescendingCellStyle BackColor="#E9EBEF" /> 
     <SortedDescendingHeaderStyle BackColor="#4870BE" /> 
    </asp:GridView> 
    <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
     ConnectionString="<%$ ConnectionStrings:ztvConnectionString %>" 

     SelectCommand="SELECT [Name], [fullname], [Id] FROM [Table1] WHERE ([Id] = @Id)"> 
     <SelectParameters> 
      <asp:ControlParameter ControlID="ddlSearchCriteria" Name="Id" 
       PropertyName="SelectedValue" Type="Int32" /> 
     </SelectParameters> 
    </asp:SqlDataSource> 
    <br /> 
    <br /> 
    <br /> 

</div> 
</form> 

+0

вы можете создать каскад фильтры, такой, когда пользователь выберите в отдел первого списка во втором списке отображается имя пользователя, который принадлежит к первому выпадающему списку и фильтрует gridview на основе значения, выбранного во втором раскрывающемся списке –

ответ

0

Вы можете использовать хранимые процедуры для привязки данных к сетке зрения, используя более одного выпадающего списка selection.Pass выпадающие выбранные значения в хранимую процедуру в качестве аргумента и получить результат. Я реализовал это как.

public void BindGridList(object sender, EventArgs e) 
    { 
     try 
     { 
      using (CompMSEntities1 CompObj = new CompMSEntities1()) 
      { 
       DateTime Start = Convert.ToDateTime(txtStart.Text); 
       DateTime End = Convert.ToDateTime(txtEnd.Text); 
       Int32 Department = Convert.ToInt32(ddlDept.SelectedValue); 
       Int32 Category = Convert.ToInt32(ddlCategory.SelectedValue); 
       Int32 Priority = Convert.ToInt32(ddlPriority.SelectedValue); 
       Int32 Status = Convert.ToInt32(ddlStatus.SelectedValue); 
       GridViewComplaintReport.DataSource = CompObj.SP_ManageComplaint_Summary(Start, End, Department, Category, Priority, Status); 
       SP_ManageComplaint_Summary_Result obj = new SP_ManageComplaint_Summary_Result(); 
       GridViewComplaintReport.DataBind(); 
       GridViewComplaintReport.Visible = true; 
       ExportTable.Visible = true; 
       TableGrid.Visible = true; 
      } 
     } 
     catch (Exception ex) 
     { 
      lblException.Text = "Problem in data retrive from database ."; 
      lblException.Visible = true; 
      ErrorHandler.WriteError(ex.ToString()); 
     } 

код хранится procedure-

CREATE PROCEDURE dbo.SP_ManageComplaint_Summary 


    @StartDate datetime, 
    @EndDate datetime, 
    @DepartmentID INT, 
    @CategoryID INT, 
    @PriorityID INT ,  

    @StatusID INT 

AS 
BEGIN 

    SELECT d1.DepartmentName,c1.CategoryName,s1.StatusType, 
    p1.PriorityType,c.Title, c.[Description], c.Created,c.DueDate, 
    u1.Email, u1.UserID, c.QMRClosedDate 

    FROM Complaint c 
    Inner JOIN Department d1 ON c.DepartmentID = d1.DepartmentID 
    Inner JOIN Category c1 ON c.CategoryID = c1.CategoryID 
    Inner JOIN Priority p1 on c.PriorityID = p1.PriorityID 
    Inner JOIN UserInfo u1 on c.UserID = u1.UserID 
    Inner JOIN [Status] s1 on c.StatusID = s1.StatusID 


    WHERE 
c.Created BETWEEN @StartDate AND @EndDate+1 AND 


    d1.DepartmentID = Case when @DepartmentID = -1 then d1.DepartmentID else @DepartmentID end AND   
    c1.CategoryID = Case when @CategoryID = -1 then c1.CategoryID else @CategoryID end AND 
    p1.PriorityID = Case when @PriorityID = -1 then p1.PriorityID else @PriorityID end AND 
    s1.StatusID =Case When @StatusID = -1 then s1.StatusID else @StatusID end