所以我整天都在纠结这个问题。我有一个指向我的模型的LinqDataSource和一个消耗它的GridView。当我尝试在GridView上进行更新时,它不会更新基础数据源。我认为它可能与LinqDataSource有关,所以我添加了一个SqlDataSource,同样的事情发生了。 aspx如下(代码隐藏页面为空):
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="Data Source=devsql32;Initial Catalog=Steam;Persist Security Info=True;"
ProviderName="System.Data.SqlClient"
SelectCommand="SELECT [LangID], [Code], [Name] FROM [Languages]" UpdateCommand="UPDATE [Languages] SET [Code]=@Code WHERE [LangID]=@LangId">
</asp:SqlDataSource>
<asp:GridView ID="_languageGridView" runat="server" AllowPaging="True"
AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="LangId"
DataSourceID="SqlDataSource1">
<Columns>
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
<asp:BoundField DataField="LangId" HeaderText="Id" ReadOnly="True" />
<asp:BoundField DataField="Code" HeaderText="Code" />
<asp:BoundField DataField="Name" HeaderText="Name" />
</Columns>
</asp:GridView>
<asp:LinqDataSource ID="_languageDataSource" ContextTypeName="GeneseeSurvey.SteamDatabaseDataContext" runat="server" TableName="Languages" EnableInsert="True" EnableUpdate="true" EnableDelete="true">
</asp:LinqDataSource>
我想念世界上的什么?这个问题让我疯了。
答案 0 :(得分:2)
您缺少&lt; UpdateParameters&gt;数据源的各个部分。
答案 1 :(得分:1)
事实证明,我们在aspx文件的母版页的Page_Load中调用了DataBind(),这可能导致GridView的状态在每次页面加载时被抛出。
作为注释 - 除非您想为它们设置一些非空默认值,否则不需要更新LINQ查询的参数。
答案 2 :(得分:0)
这是在黑暗中完全拍摄的,因为我根本没有使用过ASP。
我一直在学习XAML和WPF,它看起来与你上面发布的非常类似,我知道对于某些UI控件,你需要指定绑定模式为双向以获得更新两个方向。