所以我一整天都在研究这个问题。我有一个指向我的模型的 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>

我到底想念什么?这个问题快把我逼疯了。

有帮助吗?

解决方案 2

事实证明,我们在 aspx 文件母版页的 Page_Load 中调用了 DataBind(),这可能导致 GridView 的状态在每次页面加载时被丢弃。

请注意 - LINQ 查询的更新参数不是必需的,除非您想将它们设置为非空默认值。

其他提示

您缺少数据源的 <UpdateParameters> 部分。

LinqDataSource.UpdateParameters

SqlDataSource.UpdateParameters

由于我根本没有使用过 ASP,所以这完全是盲目的。

我刚刚学习 XAML 和 WPF,这似乎与您上面发布的内容非常相似,并且我知道对于某些 UI 控件,您需要将绑定模式指定为双向,以便在两个方向上获取更新。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top