2016-12-14 93 views
0

我遇到了将项目更新为ASP.NET GridView(旧代码)的困难。ASP.NET FormView无法执行存储过程

我的存储过程可以简化为:

UPDATE myTable SET FieldA = @FieldA, FieldB = @FieldB, FieldC = @FieldC WHERE Id = @Id 

我的数据源如下:

<asp:SqlDataSource ID="DS" runat="server" ConnectionString="<%$ ConnectionStrings:wsg_DataWriter %>" 
    SelectCommand="MySelectSP" SelectCommandType="StoredProcedure" 
    UpdateCommand="MyUpdateSP" UpdateCommandType="StoredProcedure"> 
    <SelectParameters> 
     <asp:QueryStringParameter Name="Id" QueryStringField="Id" /> 
    </SelectParameters> 
    <UpdateParameters> 
     <asp:QueryStringParameter Name="idWsgProgrammeOption" QueryStringField="idWsgProgrammeOption" /> 
    </UpdateParameters> 
</asp:SqlDataSource> 

我FormView控件如下:

  <asp:FormView ID="FV" runat="server" DataKeyNames="Id" DataSourceID="DS" > 
     <EditItemTemplate> 
         <asp:TextBox ID="TB_FieldA" runat="server" Text='<%# Bind("FieldA") %>' /> 

         <asp:ImageButton ID="IB_FieldB" runat="server" CommandName="UpdateProgramme" CommandArgument='<%# Eval("Id") %>' 
          ImageUrl='<%# (!Convert.ToBoolean(Eval("FieldB"))) ? "~/1.gif" : "~/2.gif" %>' OnCommand="On_FieldB"/> 

         <asp:TextBox ID="TB_FieldC" T runat="server" Text='<%# Bind("FieldC") %>' /> 

         <asp:ImageButton ID="i_imgbtnEnregistrer" runat="server" AlternateText="Enregistrer" 
          CommandName="Update" ImageUrl="~/App_Themes/admindefaut/image/bouton/enregitrer.gif" OnClick="OnClick"/> 

     </EditItemTemplate> 
     </asp:FormView > 

它不工作:我想存储过程无法执行。

我非常接近它的工作。这个问题似乎来自FieldB与SP的绑定。

,如果我这种方式改变它,它工作正常:

<UpdateParameters> 
      <asp:QueryStringParameter Name="idWsgProgrammeOption" QueryStringField="idWsgProgrammeOption" /> 
     </UpdateParameters> 

- >

<UpdateParameters> 
      <asp:QueryStringParameter Name="idWsgProgrammeOption" QueryStringField="idWsgProgrammeOption" /> 
<asp:Parameter Name="FieldB" /> 
     </UpdateParameters> 

并添加:

protected void OnClick(object sender, EventArgs e) 
{ 
    FV.UpdateParameters["FieldB"].DefaultValue= "1"; 
} 

所以不知何故,.NET设法得到正确的FieldA和FieldB的值并将它们传递给SP。但它无法获得正确的FieldB值。

有人能帮我一下吗?我需要传递正确的FieldB值而不使用后面的代码。

回答

0

尝试使用Bind关键字绑定FieldB到您的aspx页面上的隐藏字段,而不是Eval。