ASP.NET FormView无法执行存储过程

时间:2016-12-14 15:28:14

标签: c# mysql asp.net stored-procedures

我在将项目更新为ASP.NET GridView(旧代码)时遇到了困难。

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

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>

- &GT;

 <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值,而不使用后面的代码。

1 个答案:

答案 0 :(得分:0)

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