Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# datagrid.itemssource=e。结果不';无法在主页上工作-silverlight_C#_Wcf_Linq_Silverlight_Silverlight 5.0 - Fatal编程技术网

C# datagrid.itemssource=e。结果不';无法在主页上工作-silverlight

C# datagrid.itemssource=e。结果不';无法在主页上工作-silverlight,c#,wcf,linq,silverlight,silverlight-5.0,C#,Wcf,Linq,Silverlight,Silverlight 5.0,我正在创建一个silverlight Web应用程序,并使用linq到sql来绑定我的 sql数据库。这很有效。我现在的问题是,当我试图保存数据时 在datagrid或listbox中,什么也不发生(意味着没有输出) 这里是我在wcf服务文件中的代码: public List<mytable> get_info() { LinqMapInfoDataContext _context = new LinqMapInfoDataContext();

我正在创建一个silverlight Web应用程序,并使用linq到sql来绑定我的 sql数据库。这很有效。我现在的问题是,当我试图保存数据时 在datagrid或listbox中,什么也不发生(意味着没有输出)

这里是我在wcf服务文件中的代码:

public List<mytable> get_info()
    {
        LinqMapInfoDataContext _context = new LinqMapInfoDataContext();
        var result = (from x in _context.mytable select x).ToList();
        return result;
    }
Web.Config

<configuration>

<system.web>
    <compilation debug="true" targetFramework="4.0" />
</system.web>

<system.serviceModel>

  <bindings>

    <basicHttpBinding>
      <binding name="IncreasedTimeout"
               sendTimeout="00:25:00">
      </binding>
    </basicHttpBinding>

  </bindings>



    <behaviors>
        <serviceBehaviors>
            <behavior name="">
                <serviceMetadata httpGetEnabled="true" />
                <serviceDebug includeExceptionDetailInFaults="false" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>


您正在创建一个数据网格来保存数据,但没有添加到LayoutRoot

将DataGrid的创建移动到需要将其添加到页面的页面构造函数中,或者最好在XAML中定义它:

<Grid x:Name="LayoutRoot">
    <DataGrid ..../>
</Grid>
尝试在调试器中查看e.Result的值。这将显示要显示的项目列表。但是,您的查询仅在此时进行计算,因此如果您返回大量项目,这可能需要很长时间甚至超时。如果发生这种情况,您需要增加服务呼叫的超时时间。在第一个实例中,在服务器端编辑查询,使其只返回少数10个条目。这将允许您验证数据是否正确返回

要增加超时,请将其添加到web.config文件:

<bindings>
  <basicHttpBinding>
    <binding name="IncreasedTimeout"
             sendTimeout="00:25:00">
    </binding>
  </basicHttpBinding>

另一件奇怪的事情是,您在
列表中返回数据,而不是在
IQueryable中返回数据。对于少量的数据,我认为这不会有任何区别(考虑到您发布的代码),但这是另外一种尝试。但是,如果您可能返回大量数据,您应该查看它,因为它支持分页

这允许您控制在一次调用中返回多少数据。这会加快速度并减少客户机的内存占用(其他可能出错的事情)。然后在UI中一次显示一页数据,并允许用户在其中导航。

我知道了

我总是在更改linq2sql或服务文件中的任何内容后重新构建解决方案。 但这还不够。我必须“右键单击”解决方案文件夹中的服务参考,然后单击“实现服务参考”。在那之后,它工作得很好


谢谢你的帮助,克里斯夫。

我加入了,但仍然不起作用。我没有收到任何错误消息,但我注意到,grid1.ItemsSource=e.Result之后的所有内容;将被编译器忽略。我必须在web.config文件的何处实现该部分代码?编辑:在我尝试从我的sql数据库接收多个信息之前,我更改了代码,只获取一个信息,并将值返回到标签中。成功了。@user2037740-如果您得到一个,则表明是超时了。它位于
绑定
部分。我也会更新答案。我在第一篇文章中添加了我的web.config文件。也许你能在那里找到一些东西。
grid1.ItemsSource = e.Result;
<bindings>
  <basicHttpBinding>
    <binding name="IncreasedTimeout"
             sendTimeout="00:25:00">
    </binding>
  </basicHttpBinding>