[英]Linq Search Query Results are not Displayed in Gridview using Linqdatasource
我正在為使用GridView顯示的人員表實現搜索功能。 Linq查詢有效,但GridView不會更新它的顯示。 數據源是linqdatasource。 這是在名為Search_Submit的方法中實現的查詢。
var personnel = from i in context.Personnel
where SqlMethods.Like(i.PersonnelName, query)
where SqlMethods.Like(i.PersonnelOffice, query)
where SqlMethods.Like(i.Username, query)
where SqlMethods.Like(i.Department, query)
select new
{
PersonnelName = i.PersonnelName,
PersonnelOffice = i.PersonnelOffice,
Username = i.Username,
Department = i.Department
};
這是調用方法的按鈕。
<asp:Button ID="PersonnelSearchButton" runat="server" Text="Search" OnClick="Search_Submit" />
這是linqdatasource的代碼。
<asp:LinqDataSource ID="LinqDataSource1" runat="server" ContextTypeName="PersonnelDataContext" TableName="Personnel">
</asp:LinqDataSource>
您是否將Submit_Search
LINQ查詢的結果綁定到GridView? 顯示更多代碼可能會有所幫助(比如完整的Serach_Submit)。
即,我希望這樣的事情:
protected void Search_Submit(object sender, EventArgs e)
{
var personnel = (from i in context.Personnel
where SqlMethods.Like(i.PersonnelName, query)
where SqlMethods.Like(i.PersonnelOffice, query)
where SqlMethods.Like(i.Username, query)
where SqlMethods.Like(i.Department, query)
select new
{
PersonnelName = i.PersonnelName,
PersonnelOffice = i.PersonnelOffice,
Username = i.Username,
Department = i.Department
}).ToList();
GridView1.DataSource = personnel;
GridView1.DataBind();
}
你在使用linqdatasource嗎? 或者您在按鈕中執行查詢? 他們是兩個不同的東西。
您必須將您的查詢分配給linqdatasource,然后刷新它。 我不記得了,但我認為您將linqdatasource.Select設置為查詢的文本版本,然后可能再次調用DataBind()。
感謝您的幫助! 我能夠通過添加onselecting屬性並創建一個為選擇目的而執行的新函數來解決這個問題。
引導我得出最終結論的網站是: Linqdatasource選擇了嘖嘖
當我將查詢從T-SQL移植到Linq時,我也犯了一個非常愚蠢的錯誤,我忘記了OR'||' 在我的聲明之后。
這是代碼的最終輸出。
按鍵
<asp:Button ID="PersonnelSearchButton" runat="server" Text="Search" />
網格視圖
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AutoGenerateColumns="False" BorderColor="Black" BorderStyle="Solid"
BorderWidth="1px" CellPadding="3" DataKeyNames="ID"
DataSourceID="LinqDataSource1" onrowupdating="GridView1_RowUpdating"
ShowFooter="True" EnableModelValidation="True"
onrowcommand="GridView1_RowCommand">
使用LinqDataSource
<asp:LinqDataSource ID="LinqDataSource1" runat="server" ContextTypeName="PersonnelDataContext" TableName="Personnel" OnSelecting="LinqDataSource1_Selecting">
</asp:LinqDataSource>
C#
protected void LinqDataSource1_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
String query = "%%";
if (PersonnelSearchTextBox.Text != String.Empty)
{
query = "%" + PersonnelSearchTextBox.Text + "%";
}
var personnel = (from i in context.Personnel
where SqlMethods.Like(i.PersonnelName, query) ||
SqlMethods.Like(i.PersonnelOffice, query) ||
SqlMethods.Like(i.Username, query) ||
SqlMethods.Like(i.Department, query)
select new
{
ID = i.ID,
PersonnelName = i.PersonnelName,
PersonnelOffice = i.PersonnelOffice,
Department = i.Department,
Username = i.Username
});
e.Result = personnel;
}
我希望這有助於將來的其他人。
快速編輯:這行代碼應該在您的Page_Load方法中。
GridView1.DataSourceID = LinqDataSource1.ID;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.