asp.net - WCF 如何作为数据源工作?

标签 asp.net wcf wcf-data-services objectdatasource

如标题所示,分页WCF如何作为数据源工作? Dataservicequery有setentitysetpagesize select的记录有限制。在这种情况下它应该如何像数据源一样工作。如果绑定(bind)到web控件,查询所有记录时总记录会出错,而且分页也有分页。到期后我快要疯了。

最佳答案

您需要使用泛型类作为返回类型并使该类可序列化,然后在前端使用对象数据源。我确信它有效。

喜欢: Bizz 层作为 W.C.F 服务

 public List<Employee> GetEmployees()
        {

            try
            {

                List<Employee> emp = new List<Employee>();
                emp.Add(new Employee { Code = 1, DepartMentCode = 2, FatherName = "FatherName", ManagerCode = 2,  Name = "Bilal",ManagerName="mnagername", PhoneNumber = "24421" });
            return emp;
        }

        catch (TimeoutException te)
        {
            throw te;
        }
        catch (FaultException fe)
        {
            throw new FaultException();
        }
        catch (CommunicationException ce)
        {
            throw new CommunicationException();
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            if (client != null)
            {
                client.Close();
            }
        }
    }

//实体类

 [Serializable()]
  [DataContract()]
  public class Employee
  {
    [DataMember]
    public int Code { get; set; }
    [DataMember]
    public string Name { get; set; }
    [DataMember]
    public string FatherName { get; set; }
    [DataMember]
    public string PhoneNumber { get; set; }
    [DataMember]
    public int DepartMentCode { get; set; }
    [DataMember]
    public int ManagerCode { get; set; }
    [DataMember]
    public string ManagerName { get; set; }
}

//这是页面级代码。我希望你能理解这一点。

  <div class="EmployeeMain">
    <div class="link" onclick="Show_Popup();">
        New Employee</div>
    <fieldset>
        <legend>Employees Details </legend>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="ODSEmployee"
            OnRowEditing="GridView1_RowEditing" BackColor="LightGoldenrodYellow" BorderColor="Tan"
            BorderWidth="1px" CellPadding="2" ForeColor="Black" GridLines="None" Width="100%"
            AllowPaging="True">
            <AlternatingRowStyle BackColor="PaleGoldenrod" />
            <Columns>
                <asp:BoundField FooterText="EmployeeID" DataField="Code" HeaderText="EmployeeID" />
                <asp:BoundField FooterText="Name" DataField="Name" HeaderText="Name" />
                <asp:BoundField FooterText="Father Name" DataField="FatherName" HeaderText="Father Name" />
                <asp:BoundField FooterText="Phone Number" DataField="PhoneNumber" HeaderText="Phone Number" />
                <asp:TemplateField FooterText="manager" HeaderText="Manager">
                    <ItemTemplate>
                        <asp:Label ID="lblMangerName" Text='<%# Eval("ManagerName") %>' runat="server"></asp:Label>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:DropDownList ID="ddlManager" runat="server" DataSourceID="ManagersDataSource"
                            DataTextField="ManagerName" DataValueField="ManagerCode" SelectedValue='<%# Bind("ManagerCode") %>'
                            AppendDataBoundItems="True">
                        </asp:DropDownList>
                        <asp:ObjectDataSource runat="server" ID="ManagersDataSource" SelectMethod="GetManagers"
                            TypeName="mytest.WebApplication.BizzLayerService.EmployeeClient"></asp:ObjectDataSource>
                    </EditItemTemplate>
                </asp:TemplateField>
                <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowSelectButton="True" />
            </Columns>
            <FooterStyle BackColor="Tan" />
            <HeaderStyle BackColor="Tan" Font-Bold="True" />
            <PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" HorizontalAlign="Center" />
            <SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
            <SortedAscendingCellStyle BackColor="#FAFAE7" />
            <SortedAscendingHeaderStyle BackColor="#DAC09E" />
            <SortedDescendingCellStyle BackColor="#E1DB9C" />
            <SortedDescendingHeaderStyle BackColor="#C2A47B" />
        </asp:GridView>
        <asp:ObjectDataSource ID="ODSEmployee" runat="server" DeleteMethod="DeleteEmployeeRecord"
            InsertMethod="SaveEmployeeRecord" SelectMethod="GetEmployees" TypeName="mytest.WebApplication.BizzLayerService.EmployeeClient"
            UpdateMethod="UpdateEmployeeRecord">
            <DeleteParameters>
                <asp:Parameter Name="empCode" Type="Int32" />
            </DeleteParameters>
            <InsertParameters>
                <asp:Parameter Name="empCode" Type="Int32" />
                <asp:Parameter Name="empName" Type="String" />
                <asp:Parameter Name="empFatherName" Type="String" />
                <asp:Parameter Name="empPhoneNumber" Type="String" />
                <asp:Parameter Name="empAddress" Type="String" />
                <asp:Parameter Name="empDeparmentCode" Type="Int32" />
                <asp:Parameter Name="EmpManagerCode" Type="Int32" />
            </InsertParameters>
            <UpdateParameters>
                <asp:Parameter Name="empCode" Type="Int32" />
                <asp:Parameter Name="empName" Type="String" />
                <asp:Parameter Name="empFatherName" Type="String" />
                <asp:Parameter Name="empPhoneNumber" Type="String" />
                <asp:Parameter Name="empAddress" Type="String" />
                <asp:Parameter Name="empDeparmentCode" Type="Int32" />
                <asp:Parameter Name="EmpManagerCode" Type="Int32" />
            </UpdateParameters>
        </asp:ObjectDataSource>
        <br />
    </fieldset>
</div>
<div class="newAcount">
    <table>
    <tr>
    <td colspan="2">
    <h1>New Employee Record</h1>
    </td>
    </tr>
        <tr>
            <td>
                Name
            </td>
            <td>
                <asp:TextBox ID="txtName" runat="server"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td>
                Father Name
            </td>
            <td>
                <asp:TextBox ID="txtFathername" runat="server"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td>
                Phone Number
            </td>
            <td>
                <asp:TextBox ID="txtPhonuNumber" runat="server"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td>
                Address
            </td>
            <td>
                <asp:TextBox ID="txtAddress" runat="server"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td>
                Department code
            </td>
            <td>
                <asp:DropDownList ID="ddlDeptCode" runat="server">
                </asp:DropDownList>

            </td>
        </tr>
        <tr>
            <td>
                Manager Code
            </td>
            <td>
              <asp:DropDownList ID="ddlManagerName" runat="server">
                </asp:DropDownList>

            </td>
        </tr>
        <tr>
            <td>
                <asp:Button ID="btnSaveRecord" runat="server" Text="Button" />
            </td>
            <td>
                <input id="Button1" type="button" value="close" onclick="Close_Popup()" />
            </td>
        </tr>
    </table>
</div>

关于asp.net - WCF 如何作为数据源工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10291808/

相关文章:

asp.net - Request.Url.Host 与 Request.Headers ["host"相同]?

asp.net - 在通用 http 处理程序中处理 session 超时

asp.net - 使用 JavaScript 从网格重定向是否会提高性能

WCF + SSL,获取方法调用的空结果

wcf - 自承载 WCF 数据服务上的 Kerberos 身份验证

wcf - LinqPad 如何支持 WCF 数据服务?

asp.net - 正则表达式或 Try Catch 来验证 double - 最佳性能

c# - 将 Miniprofiler 集成到控制台 WCF 自宿主

wcf - 在服务和客户端之间共享 WCF 设置

wcf-data-services - ADO.NET 数据服务——非 .NET 消费者