2009-04-27 13 views
1

我有一個gridview綁定到LINQ to Sql數據源。我想用LIKE運算符過濾gridview中的結果。即我有一個用於搜索用戶名的文本框,我想選擇所有用戶名爲[文本框值]的用戶。使用Linq to Sql對象數據源過濾使用LIKE運算符的Gridview結果

下面是我的代碼:

<h1>Manage Users</h1> 
搜索用戶 用戶名:
<asp:GridView ID="GridView2" runat="server" AllowPaging="True" 
    AllowSorting="True" AutoGenerateColumns="False" DataSourceID="LinqDataSource1"> 
    <Columns> 
     <asp:BoundField DataField="UserName" HeaderText="User Name" ReadOnly="True" 
      SortExpression="UserName" /> 
     <asp:BoundField DataField="FullName" HeaderText="Full Name" ReadOnly="True" 
      SortExpression="FullName" /> 
     <asp:BoundField DataField="Email" HeaderText="Email" ReadOnly="True" 
      SortExpression="Email" /> 
     <asp:BoundField DataField="LastLoginDate" HeaderText="Last Login" ReadOnly="True" 
      SortExpression="LastLoginDate" DataFormatString="{0:dd MMMM yyyy}"/> 
     <asp:HyperLinkField Text="Edit" DataNavigateUrlFields="UserId" DataNavigateUrlFormatString="~/Pages/UsersMaintenance/CreateEditUser.aspx?UserId={0}" /> 
    </Columns> 
</asp:GridView> 
<asp:LinqDataSource ID="LinqDataSource1" runat="server" 
    ContextTypeName="AirProducts.BusinessLogic.AirProductsDataContext" 

    Select="new (UserId,UserName, Details.FullName,Membership.Email,Membership.LastLoginDate)" 
    TableName="Users" Where="UserName == @UserName" > 
    <WhereParameters> 
     <asp:ControlParameter ControlID="txtUsername" Name="UserName" 
      PropertyName="Text" Type="String" /> 
    </WhereParameters> 
</asp:LinqDataSource> 

回答

2

替代等於運營商的String.Contains通話方法在您的LINQ表達式的子句:

<asp:LinqDataSource ID="LinqDataSource1" runat="server" 
    ContextTypeName="AirProducts.BusinessLogic.AirProductsDataContext" 

     Select="new (UserId,UserName, Details.FullName,Membership.Email,Membership.LastLoginDate)" 
     TableName="Users" Where="UserName.Contains(@UserName)" > 
     <WhereParameters> 
       <asp:ControlParameter ControlID="txtUsername" Name="UserName" 
         PropertyName="Text" Type="String" /> 
     </WhereParameters> 
</asp:LinqDataSource> 
+0

我有類似的問題,你能幫助我在這裏http://stackoverflow.com/questions/3356900/linqdatasource-gridview -filtering-with-dropdownlist – 2010-07-29 14:09:02

0

我無法讓它在LinqDataSource的標記中工作,但能夠在這裏捕獲它,並作爲獎勵獲得了intellisense支持。

protected void LinqDataSource1_Selecting(object sender, LinqDataSourceSelectEventArgs e) 
{ 
    AirProductsDataContext db = new AirProductsDataContext(); 
    e.Result = from v in db.Users orderby v.UserName ascending 
       where v.UserName.Contains(txtUsername.Text) 
       select new {v.UserId,v.UserName, v.UserDetail.FullName,v.Membership.Email,v.Membership.LastLoginDate}; 
} 
0

你可以得到信息,您的要求,請參考以下鏈接 www.delicious.com/sridharnetha

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName.Equals("AddNew")) 
    { 
    TextBox txtNewName=(TextBox)GridView1.FooterRow.FindControl("txtNewName"); 
    DropDownList cmbNewGender = (DropDownList)GridView1.FooterRow.FindControl("cmbNewGender"); 
    TextBox txtNewCity = (TextBox)GridView1.FooterRow.FindControl("txtNewCity"); 
    TextBox txtNewState = (TextBox)GridView1.FooterRow.FindControl("txtNewState"); 
    DropDownList cmbNewType = (DropDownList)GridView1.FooterRow.FindControl("cmbNewType"); 

    customer.Insert(txtNewName.Text, cmbNewGender.SelectedValue, txtNewCity.Text, txtNewState.Text, cmbNewType.SelectedValue) ; 
    FillCustomerInGrid(); 
    } 
}