【问题标题】:LinqDataSource class exampleLinqDataSource 类示例
【发布时间】:2011-09-23 00:02:53
【问题描述】:

刚开始研究将 LinqDataSource 用于 GridView,我正在寻找更多关于如何设置数据源的示例。

我希望稍后将它用于 SharePoint 列表,但现在我只是在为一个可以检索和更新数据的类提供一些详细示例。

这是一个来自 MS 的示例类。我只是看了不止一个例子,所以我对它的工作原理有了更好的了解。

一个已知可行但稍微复杂一点的简单示例会很棒

public class MovieLibrary
{
        string[] _availableGenres = { "Comedy", "Drama", "Romance" };

        public MovieLibrary()
        {
        }

        public string[] AvailableGenres
        {
            get
            {
                return _availableGenres;
            }
        }
    }

干杯

【问题讨论】:

  • 您是在寻找纯粹的内存(linq-to-objects)示例还是具有文件和/或数据库持久性的示例?
  • 只是在内存中的例子很好。

标签: c# asp.net linq gridview linqdatasource


【解决方案1】:

我正在使用带有 SPGridView 的 LinqDataSource 这是我的代码。

      <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 Selecting 事件中是数据绑定发生的地方

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.

【讨论】:

  • 非常感谢。您是否通过 SPGridView 编辑任何这些数据?
  • 在 ASP.NET Gridview 中,您可以通过 RowCommand 处理编辑,但对于 SPGridView,我使用了 SPMenuField 来执行此操作。尝试谷歌搜索如何使用 SPGridView 和 SPMenuField
  • 干杯我会检查出来。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-29
  • 2010-12-28
  • 1970-01-01
相关资源
最近更新 更多