Фильтрация результатов Gridview с использованием источника данных Linq to Sql Object с оператором LIKE - PullRequest
1 голос
/ 27 апреля 2009

У меня есть сетка, связанная с источником данных LINQ to Sql. Я хотел бы отфильтровать результаты в сетке с помощью оператора LIKE. у меня есть текстовое поле для поиска по имени пользователя, и я хотел бы выбрать всех пользователей с таким именем пользователя, как [значение текстового поля].

Ниже мой код:

<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>

Ответы [ 3 ]

2 голосов
/ 27 апреля 2009

Замените оператор равенства вызовом 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 голосов
/ 09 мая 2009

Вы можете получить информацию о ваших требованиях, пожалуйста, перейдите по этой ссылке 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();
  }
} 
0 голосов
/ 29 апреля 2009

Я не смог заставить его работать в разметке 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};
}
...