WCF服务将数据填充到ASP.net下拉列表(学习WCF服务)

3phpmpom  于 2023-01-14  发布在  .NET
关注(0)|答案(2)|浏览(104)

我正试图学习的周转基金服务,最终纳入与我们的网站之一。
我已经在我的数据库中创建了一个名为[TestTable]的测试表,我已经能够成功地将数据从在visual studios中创建的测试站点写入该表。
我现在尝试从数据库填充一个下拉列表。在本例中,是所有州的列表。
似乎缺少某些内容。我可以调用该服务,它将显示WCF测试客户端中的所有状态;然而,我似乎不知道如何将它返回的列表附加到ASP.net下拉列表中。
下面是我的IService1.cs

[ServiceContract]
public interface IService1
{

    [OperationContract]
    //string GetData(int value);
    string InsertApplicantDetails(ApplicantDetails appInfo);

    [OperationContract]
    List<US_States> GetAllStates();

    //CompositeType GetDataUsingDataContract(CompositeType composite);

    // TODO: Add your service operations here

}

这是我的GetAllStates服务1.svc.cs

public List<US_States> GetAllStates()
    {
        using (JobSeekersEntities db = new JobSeekersEntities())
        {
            var q = (from us_states in db.US_States
                     orderby us_states.abbr ascending
                     select us_states);

            List<US_States> list_States = q.ToList<US_States>();

            return list_States.ToList();

        }
    }

在测试网站中,我创建了一个名为“dropdownStates”的下拉列表。
我已经添加了ServiceReference,并且它正在工作,因为我可以向数据库提交值。我还为下拉列表创建了Load()事件。
这是我的测试页面。

public partial class TestSubmission : System.Web.UI.Page

{服务参考1.服务1Client对象条件=新服务参考1.服务1Client();

protected void Page_Load(object sender, EventArgs e)
{

}

protected void dropdownStates_Load(object sender, EventArgs e)
{
    //ServiceReference1.Service1Client myCon = new ServiceReference1.Service1Client();
    dropdownStates.Items = ????

}

}
任何帮助都将不胜感激。谢谢你的时间。

wpcxdonn

wpcxdonn1#

首先确保您定义了正确的DataContract和Service Contract。在下面的示例中,我定义了具有2个属性的US States。请注意[OperationContract]和[DataContract]声明!

namespace WcfService1
{
    [ServiceContract]
    public interface IService1
    {

        [OperationContract]
        List<US_States> GetAllStates();

    }

    [DataContract]
    public class US_States
    {
        [DataMember]
        public int StateId { get; set; }

        [DataMember]
        public string StateName { get; set; }
    }
}

接下来,将WebService引用添加到项目中,并进行如下调用:(将StateName绑定到文本,将StateId绑定到值)

protected void dropdownStates_Load(object sender, EventArgs e)
    {
        ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
        dropdownStates.Items.Clear();
        dropdownStates.DataSource = client.GetAllStates();
        dropdownStates.DataTextField = "StateName";
        dropdownStates.DataValueField = "StateId";
        dropdownStates.DataBind();
        client.Close();
    }

最后是服务:

namespace WcfService1
{
    public class Service1 : IService1
    {
        public List<US_States> GetAllStates()
        {
            List<US_States> result = new List<US_States>();
            result.Add(new US_States() { StateId = 1, StateName = "New York" });
            result.Add(new US_States() { StateId = 2, StateName = "Washington" });
            result.Add(new US_States() { StateId = 3, StateName = "Indiana" });
            return result;
        }
    }
}
x6h2sr28

x6h2sr282#

using(ServiceReference1.Service1Client client = new ServiceReference1.Service1Client())
{
        dropdownStates.Items.Clear();
        dropdownStates.DataSource = client.GetAllStates();
        dropdownStates.DataTextField = "Name";
        dropdownStates.DataValueField = "Id";
        dropdownStates.DataBind();
}

你只需要设置下拉数据源到列表。设置文本和数据值字段根据你想显示为项目和它应该有什么值,最后调用数据绑定。

相关问题