.aspx страница
<asp:DropDownList ID="ddlSelector" AutoPostBack="true" runat="server"
onselectedindexchanged="ddlSelector_SelectedIndexChanged" >
<asp:ListItem>Employee</asp:ListItem>
<asp:ListItem>Customer</asp:ListItem>
</asp:DropDownList>
<asp:Button ID="btnSearch" runat="server" onclick="btnSearch_Click" Text="Search" />
<br />
<table>
<tr>
<td class="txtclmn">
First Name:</td>
<td>
<asp:TextBox ID="txtFname" runat="server"></asp:TextBox>
</td>
<td class="txtclmn">
Last Name:</td>
<td>
<asp:TextBox ID="txtLname" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td class="txtclmn">
Middle Name:</td>
<td>
<asp:TextBox ID="txtMname" runat="server"></asp:TextBox>
</td>
<td class="txtclmn">
Phone Number:</td>
<td>
<asp:TextBox ID="txtPhone" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td class="txtclmn">
Email Address:</td>
<td>
<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
</td>
<td class="txtclmn">
</td>
<td>
</td>
</tr>
</table>
<div runat="server" id="empCriteria">
<table >
<tr>
<td class="txtclmn">
<asp:Label ID="lblHdate" runat="server" Text="Hire Date:"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtHMonth" runat="server" MaxLength="2" CssClass="input2char"></asp:TextBox>
<asp:Label ID="lblHdash1" runat="server" Text="-"></asp:Label>
<asp:TextBox ID="txtHDay" runat="server" MaxLength="2" CssClass="input2char"></asp:TextBox>
<asp:Label ID="lblHdash2" runat="server" Text="-"></asp:Label>
<asp:TextBox ID="txtHYear" runat="server" MaxLength="4" CssClass="input4char"></asp:TextBox>
</td>
<td class="txtclmn">
<asp:Label ID="lblBdate" runat="server" Text="Birth Date:"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtBMonth" runat="server" MaxLength="2" CssClass="input2char"></asp:TextBox>
<asp:Label ID="lblBdash1" runat="server" Text="-"></asp:Label>
<asp:TextBox ID="txtBDay" runat="server" MaxLength="2" CssClass="input2char"></asp:TextBox>
<asp:Label ID="lblBdash2" runat="server" Text="-"></asp:Label>
<asp:TextBox ID="txtBYear" runat="server" MaxLength="4" CssClass="input4char"></asp:TextBox>
</td>
</tr>
<tr>
<td class="txtclmn">
<asp:Label ID="lblLoginId" runat="server" Text="Login ID:"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtLogin" runat="server"></asp:TextBox>
</td>
<td class="txtclmn">
<asp:Label ID="lblJobTitle" runat="server" Text="Job Title:"></asp:Label></td>
<td>
<asp:TextBox ID="txtJobTitle" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td class="txtclmn">
<asp:Label ID="lblGender" runat="server" Text="Gender:"></asp:Label>
</td>
<td>
<asp:DropDownList ID="ddlGender" runat="server" style="width: 73px">
<asp:ListItem Value="-1">-----------</asp:ListItem>
<asp:ListItem Value="M">Male</asp:ListItem>
<asp:ListItem Value="F">Female</asp:ListItem>
</asp:DropDownList>
</td>
<td class="txtclmn">
<asp:Label ID="lblMarStat" runat="server" Text="Marital Status:"></asp:Label>
</td>
<td>
<asp:DropDownList ID="ddlMarStat" runat="server">
<asp:ListItem Value="-1">-----------</asp:ListItem>
<asp:ListItem Value="S">Single</asp:ListItem>
<asp:ListItem Value="M">Married</asp:ListItem>
</asp:DropDownList>
</td>
</tr>
<tr>
<td class="txtclmn">
<asp:Label ID="lblActive" runat="server" Text="Active:"></asp:Label>
</td>
<td>
<asp:DropDownList ID="ddlActive" runat="server">
<asp:ListItem Value="-1">-----</asp:ListItem>
<asp:ListItem Value="1">Yes</asp:ListItem>
<asp:ListItem Value="0">No</asp:ListItem>
</asp:DropDownList>
</td>
<td class="txtclmn">
<asp:Label ID="lblSalary" runat="server" Text="Salaried:"></asp:Label></td>
<td>
<asp:DropDownList ID="ddlSalary" runat="server">
<asp:ListItem Value="-1">-----</asp:ListItem>
<asp:ListItem Value="1">Yes</asp:ListItem>
<asp:ListItem Value="0">No</asp:ListItem>
</asp:DropDownList>
</td>
</tr>
</table>
</div>
<br />
<br />
<asp:GridView ID="gdvCust" runat="server" AllowPaging="True"
AutoGenerateColumns="False"
onpageindexchanging="gdvCust_PageIndexChanging">
<Columns>
<asp:BoundField DataField="ContactID" HeaderText="ContactID" ReadOnly="True"
SortExpression="ContactID" />
<asp:BoundField DataField="Title" HeaderText="Title" ReadOnly="True"
SortExpression="Title" />
<asp:BoundField DataField="FirstName" HeaderText="FirstName" ReadOnly="True"
SortExpression="FirstName" />
<asp:BoundField DataField="MiddleName" HeaderText="MiddleName" ReadOnly="True"
SortExpression="MiddleName" />
<asp:BoundField DataField="LastName" HeaderText="LastName" ReadOnly="True"
SortExpression="LastName" />
<asp:BoundField DataField="Suffix" HeaderText="Suffix" ReadOnly="True"
SortExpression="Suffix" />
<asp:BoundField DataField="EmailAddress" HeaderText="EmailAddress"
ReadOnly="True" SortExpression="EmailAddress" />
<asp:BoundField DataField="Phone" HeaderText="Phone" ReadOnly="True"
SortExpression="Phone" />
<asp:ButtonField ButtonType="Button" CommandName="Edit" Text="Edit" />
</Columns>
</asp:GridView>
<br />
<asp:GridView ID="gdvEmp" runat="server" AllowPaging="True"
AutoGenerateColumns="False"
onpageindexchanging="gdvEmp_PageIndexChanging">
<Columns>
<asp:BoundField DataField="EmployeeID" HeaderText="EmployeeID" ReadOnly="True"
SortExpression="EmployeeID" />
<asp:BoundField DataField="JobTitle" HeaderText="Job Title" ReadOnly="True"
SortExpression="Title" />
<asp:BoundField DataField="FirstName" HeaderText="FirstName" ReadOnly="True"
SortExpression="FirstName" />
<asp:BoundField DataField="MiddleName" HeaderText="MiddleName" ReadOnly="True"
SortExpression="MiddleName" />
<asp:BoundField DataField="LastName" HeaderText="LastName" ReadOnly="True"
SortExpression="LastName" />
<asp:BoundField DataField="Suffix" HeaderText="Suffix" ReadOnly="True"
SortExpression="Suffix" />
<asp:BoundField DataField="EmailAddress" HeaderText="EmailAddress"
ReadOnly="True" SortExpression="EmailAddress" />
<asp:BoundField DataField="Phone" HeaderText="Phone" ReadOnly="True"
SortExpression="Phone" />
<asp:BoundField DataField="LoginID" HeaderText="LoginID" ReadOnly="True"
SortExpression="LoginID" />
<asp:BoundField DataField="Title" HeaderText="Title" ReadOnly="True"
SortExpression="Title" />
<asp:BoundField DataField="BirthDate" HeaderText="BirthDate" ReadOnly="True"
SortExpression="BirthDate" />
<asp:BoundField DataField="MaritalStatus" HeaderText="MaritalStatus" ReadOnly="True"
SortExpression="MaritalStatus" />
<asp:BoundField DataField="Gender" HeaderText="Gender" ReadOnly="True"
SortExpression="Gender" />
<asp:BoundField DataField="HireDate" HeaderText="HireDate"
ReadOnly="True" SortExpression="HireDate" />
<asp:CheckBoxField DataField="SalariedFlag" HeaderText="SalariedFlag"
ReadOnly="True" SortExpression="SalariedFlag" />
<asp:CheckBoxField DataField="CurrentFlag" HeaderText="CurrentFlag"
ReadOnly="True" SortExpression="CurrentFlag" />
</Columns>
</asp:GridView>
</form>
отделенный код
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
namespace TestProj
{
public partial class Search : System.Web.UI.Page
{
static IQueryable<Contact> _conResults;
//static IQueryable<EmpContact> _empResults;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void ddlSelector_SelectedIndexChanged(object sender, EventArgs e)
{
gdvCust.DataSource = null;
gdvCust.DataBind();
gdvEmp.DataSource = null;
gdvEmp.DataBind();
bool flag;
if (ddlSelector.SelectedValue == "Employee")
flag = true;
else
{
flag = false;
}
foreach( Control c in empCriteria.Controls)
{
c.Visible = flag;
}
}
private IQueryable<Contact> CreateCustQuery()
{
TestDataClassDataContext dc = new TestDataClassDataContext();
var predicate = PredicateBuilder.True<Contact>();
var cust = from individual in dc.Individuals
join contact in dc.Contacts on individual.ContactID equals contact.ContactID
select contact;
if (!string.IsNullOrEmpty(txtLname.Text))
predicate = predicate.And( e => e.LastName.Contains(txtLname.Text));
if (!string.IsNullOrEmpty(txtFname.Text))
predicate = predicate.And(e => e.FirstName.Contains(txtFname.Text));
if (!string.IsNullOrEmpty(txtMname.Text))
predicate = predicate.And(e => e.MiddleName.Contains(txtMname.Text));
if (Utility.IsValidPhone(txtPhone.Text))
predicate = predicate.And(e => e.Phone.Contains(txtPhone.Text));
if (Utility.IsValidEmailAddress(txtEmail.Text))
predicate = predicate.And(e => e.EmailAddress.Contains(txtEmail.Text));
var results = cust.Where(predicate);
return results;
}
//private void CreateEmpQuery()
//{
// TestDataClassDataContext dc = new TestDataClassDataContext();
// var emp = from c in dc.Contacts
// from e in dc.Employees
// where c.ContactID == e.ContactID
// select new
// {
// FirstName = c.FirstName,LastName = c.LastName, MiddleName =c.MiddleName, Phone = c.Phone,
// EmailAddress = c.EmailAddress
// };
// var predicate = PredicateBuilder.True<>();
// if (!string.IsNullOrEmpty(txtLname.Text))
// predicate = predicate.And(e => e.LastName.Contains(txtLname.Text));
// if (!string.IsNullOrEmpty(txtFname.Text))
// predicate = predicate.And(e => e.FirstName.Contains(txtFname.Text));
// if (!string.IsNullOrEmpty(txtMname.Text))
// predicate = predicate.And(e => e.MiddleName.Contains(txtMname.Text));
// if (Utility.IsValidPhone(txtPhone.Text))
// predicate = predicate.And(e => e.Phone.Contains(txtPhone.Text));
// if (Utility.IsValidEmailAddress(txtEmail.Text))
// predicate = predicate.And(e => e.EmailAddress.Contains(txtEmail.Text));
// var results = emp.Where(predicate);
//}
private void GetCustResults()
{
_conResults = CreateCustQuery();
gdvCust.DataSource = _conResults;
gdvCust.DataBind();
}
//private void GetEmpResults()
//{
// _empResults = CreateEmpQuery();
// gdvEmp.DataSource = _empResults;
// gdvEmp.DataBind();
//}
protected void gdvCust_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gdvCust.PageIndex = e.NewPageIndex;
gdvCust.DataSource = _conResults;
gdvCust.DataBind();
}
//protected void gdvEmp_PageIndexChanging(object sender, GridViewPageEventArgs e)
//{
// gdvCust.PageIndex = e.NewPageIndex;
// gdvEmp.DataSource = _empResults;
// gdvEmp.DataBind();
//}
protected void btnSearch_Click(object sender, EventArgs e)
{
if (ddlSelector.SelectedValue == "Customer")
GetCustResults();
//else
//GetEmpResults();
}
}
}
закончил результаты только после того, как я перешел к другому проекту, в то время я использовал linq, но это может помочь вам понять, что необходимо для запуска gridview. это использует linq с AdventureWorks в качестве примера базы данных
Объяснение кода, на что стоит обратить внимание, это
<asp:GridView ID="gdvCust" runat="server" AllowPaging="True"
AutoGenerateColumns="False"
onpageindexchanging="gdvCust_PageIndexChanging">
и столбцы и связанные поля на странице aspx, где DataField = Имя столбца в базе данных, а поле Заголовок - это то, что помечено в верхней части столбца в виде таблицы.
Теперь о коде позади посмотрите на
private void GetCustResults()
{
_conResults = CreateCustQuery();
gdvCust.DataSource = _conResults;
gdvCust.DataBind();
}
//and
protected void gdvCust_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gdvCust.PageIndex = e.NewPageIndex;
gdvCust.DataSource = _conResults;
gdvCust.DataBind();
}
они выполняют привязку из источника данных и элемента управления подкачкой. прокомментируйте, если вам нужно больше объяснений