GridView不会更新基础数据源
时间:2020-03-05 18:50:15 来源:igfitidea点击:
所以我整天都在努力解决这个问题。我有一个指向我的模型的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>
我在这里想念什么?这个问题使我发疯。
解决方案
回答
因为我根本没有使用过ASP,所以这是一个黑暗的镜头。
我一直在学习XAML和WPF,这似乎与我们上面发布的内容非常相似,并且我知道对于某些UI控件,我们需要指定双向绑定模式才能双向获取更新。 。
回答
我们缺少数据源的<UpdateParameters>部分。
LinqDataSource.UpdateParameters
SqlDataSource.UpdateParameters
回答
事实证明,我们在aspx文件的母版页的Page_Load中进行了DataBind()调用,这可能导致GridView的状态在每次加载页面时都被丢弃。
请注意,除非我们要为LINQ查询设置一些非null的默认值,否则不需要更新参数。