我将 LinqDataSource 与 SPGridView 一起使用,这是我的代码。
<SharePoint:SPGridView runat="server" ID="spgvUserTrainingLists" AutoGenerateColumns="false"
DataSourceID="linqDsEmployeeTrainingLists" DataKeyNames="RowId" OnRowDataBound="spgvUserTrainingLists_RowDataBound"
AllowSorting="true" AllowPaging="true" PageSize="15" AllowFiltering="true" FilteredDataSourcePropertyName="Where"
FilteredDataSourcePropertyFormat='{1} == "{0}"' FilterDataFields=",TrainingType,,Trainer,Status">
<Columns>
<SharePoint:SPBoundField HeaderText="Ref #" SortExpression="RefNo" DataField="RefNo" />
<SharePoint:SPBoundField HeaderText="Type" SortExpression="TrainingType" DataField="TrainingType" />
<asp:TemplateField HeaderText="Training" SortExpression="TrainingTitle">
<ItemTemplate>
<asp:HyperLink ID="hlTrainingDetail" runat="server" Text='<%# Eval("TrainingTitle") %>'
NavigateUrl="#" />
</ItemTemplate>
</asp:TemplateField>
<SharePoint:SPBoundField HeaderText="Trainer" SortExpression="Trainer" DataField="Trainer" />
<SharePoint:SPBoundField HeaderText="Status" SortExpression="Status" DataField="Status" />
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="imgDelete" ImageUrl="~/_layouts/images/DELITEM.GIF" runat="server"
UseSubmitBehaviour="false" CommandValue='<%# Eval("RowId") %>' OnClientClick="javascript:DeleteTraining(this);" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>
No training yet.
</EmptyDataTemplate>
</SharePoint:SPGridView>
<SharePoint:SPGridViewPager ID="SPGridViewPager1" runat="server" GridViewId="spgvUserTrainingLists" />
<aspweb:LinqDataSource runat="server" ID="linqDsEmployeeTrainingLists" OnSelecting="linqDs_Selecting" />
在 LinqDataSource 中选择事件是数据绑定发生的地方
protected void linqDs_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
object parameter = null;
if (e.SelectParameters.TryGetValue("employee", out parameter))
{
e.Result = DefaultBLL.GetEmployeeTrainingLists(parameter.ToString());
}
}
Hope this help.