2016-12-14 91 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。